tuwunel_api_client/session/
logout.rs1use axum::extract::State;
2use ruma::api::client::session::{logout, logout_all};
3use tuwunel_core::Result;
4
5use crate::{ClientIp, Ruma};
6
7#[tracing::instrument(skip_all, fields(%client), name = "logout")]
17pub(crate) async fn logout_route(
18 State(services): State<crate::State>,
19 ClientIp(client): ClientIp,
20 body: Ruma<logout::v3::Request>,
21) -> Result<logout::v3::Response> {
22 services
23 .users
24 .remove_device(body.sender_user(), body.sender_device()?)
25 .await;
26
27 Ok(logout::v3::Response::new())
28}
29
30#[tracing::instrument(skip_all, fields(%client), name = "logout")]
44pub(crate) async fn logout_all_route(
45 State(services): State<crate::State>,
46 ClientIp(client): ClientIp,
47 body: Ruma<logout_all::v3::Request>,
48) -> Result<logout_all::v3::Response> {
49 services
50 .users
51 .remove_devices(body.sender_user(), None)
52 .await;
53
54 Ok(logout_all::v3::Response::new())
55}