Skip to main content

tuwunel_admin/query/oauth/
revoke.rs

1use tuwunel_core::{
2	Result,
3	either::{Left, Right},
4};
5
6use super::SessionOrUserId;
7use crate::admin_command;
8
9#[admin_command]
10pub(super) async fn oauth_revoke(&self, id: SessionOrUserId) -> Result {
11	match id {
12		| Left(sess_id) => {
13			let session = self.services.oauth.sessions.get(&sess_id).await?;
14
15			let provider = self
16				.services
17				.oauth
18				.sessions
19				.provider(&session)
20				.await?;
21
22			self.services
23				.oauth
24				.revoke_token((&provider, &session))
25				.await
26				.ok();
27		},
28		| Right(user_id) =>
29			self.services
30				.oauth
31				.revoke_user_tokens(&user_id)
32				.await,
33	}
34
35	self.write_str("revoked").await
36}