diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index baf2f239..520bfa00 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -907,7 +907,6 @@ async fn join_room_by_id_helper( .rooms .state_accessor .user_can_invite(room_id, &user, sender_user, &state_lock) - .await .unwrap_or(false) { auth_user = Some(user); diff --git a/src/api/server_server.rs b/src/api/server_server.rs index 0e3d6f7d..65f5339a 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -1530,6 +1530,12 @@ pub async fn create_join_event_template_route( let room_version_id = services().rooms.state.get_room_version(&body.room_id)?; + let join_authorized_via_users_server = if (services() + .rooms + .state_cache + .is_left(&body.user_id, &body.room_id) + .unwrap_or(true) + || services() .rooms .state_cache .is_knocked(&body.user_id, &body.room_id) diff --git a/src/service/rooms/state_accessor/mod.rs b/src/service/rooms/state_accessor/mod.rs index f1dcb3dc..e1bcd3c3 100644 --- a/src/service/rooms/state_accessor/mod.rs +++ b/src/service/rooms/state_accessor/mod.rs @@ -308,7 +308,7 @@ impl Service { }) } - pub async fn user_can_invite( + pub fn user_can_invite( &self, room_id: &RoomId, sender: &UserId,