Merge pull request 'Implement /logout/all' (#141) from CapsizeGlimmer/conduit:logout-all into master
Reviewed-on: https://git.koesters.xyz/timo/conduit/pulls/141 Reviewed-by: Timo Kösters <timo@koesters.xyz>next
commit
8409146415
|
@ -45,7 +45,7 @@ use ruma::{
|
||||||
read_marker::set_read_marker,
|
read_marker::set_read_marker,
|
||||||
redact::redact_event,
|
redact::redact_event,
|
||||||
room::{self, create_room},
|
room::{self, create_room},
|
||||||
session::{get_login_types, login, logout},
|
session::{get_login_types, login, logout, logout_all},
|
||||||
state::{
|
state::{
|
||||||
create_state_event_for_empty_key, create_state_event_for_key, get_state_events,
|
create_state_event_for_empty_key, create_state_event_for_key, get_state_events,
|
||||||
get_state_events_for_empty_key, get_state_events_for_key,
|
get_state_events_for_empty_key, get_state_events_for_key,
|
||||||
|
@ -305,6 +305,22 @@ pub fn logout_route(
|
||||||
Ok(logout::Response.into())
|
Ok(logout::Response.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[post("/_matrix/client/r0/logout/all", data = "<body>")]
|
||||||
|
pub fn logout_all_route(
|
||||||
|
db: State<'_, Database>,
|
||||||
|
body: Ruma<logout_all::Request>,
|
||||||
|
) -> ConduitResult<logout_all::Response> {
|
||||||
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
for device_id in db.users.all_device_ids(user_id) {
|
||||||
|
if let Ok(device_id) = device_id {
|
||||||
|
db.users.remove_device(&user_id, &device_id)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(logout_all::Response.into())
|
||||||
|
}
|
||||||
|
|
||||||
#[post("/_matrix/client/r0/account/password", data = "<body>")]
|
#[post("/_matrix/client/r0/account/password", data = "<body>")]
|
||||||
pub fn change_password_route(
|
pub fn change_password_route(
|
||||||
db: State<'_, Database>,
|
db: State<'_, Database>,
|
||||||
|
|
|
@ -29,6 +29,7 @@ fn setup_rocket() -> rocket::Rocket {
|
||||||
client_server::get_login_route,
|
client_server::get_login_route,
|
||||||
client_server::login_route,
|
client_server::login_route,
|
||||||
client_server::logout_route,
|
client_server::logout_route,
|
||||||
|
client_server::logout_all_route,
|
||||||
client_server::change_password_route,
|
client_server::change_password_route,
|
||||||
client_server::deactivate_route,
|
client_server::deactivate_route,
|
||||||
client_server::get_capabilities_route,
|
client_server::get_capabilities_route,
|
||||||
|
|
|
@ -65,3 +65,4 @@ User in shared private room does appear in user directory
|
||||||
User in dir while user still shares private rooms
|
User in dir while user still shares private rooms
|
||||||
POST /rooms/:room_id/ban can ban a user
|
POST /rooms/:room_id/ban can ban a user
|
||||||
Alternative server names do not cause a routing loop
|
Alternative server names do not cause a routing loop
|
||||||
|
Can logout all devices
|
||||||
|
|
Loading…
Reference in New Issue