feat: Add support for MSC4540

This commit is contained in:
Ginger authored and Ellis Git committed 2026-10-05 14:22:53 +00:00
1 parent 0d48c9681d
commit bc9b97e97f
4 files changed
+30 -21

No files matched your search

+12 -6
View File
@@ -1,14 +1,17 @@
use std::collections::BTreeMap;
use std::collections::{BTreeMap, BTreeSet};
use axum::extract::State;
use conduwuit::{Result, Server};
use ruma::{
RoomVersionId,
api::client::discovery::get_capabilities::{
self,
v3::{
Capabilities, GetLoginTokenCapability, ProfileFieldsCapability, RoomVersionStability,
RoomVersionsCapability, ThirdPartyIdChangesCapability,
api::{
OAuthClientScope,
client::discovery::get_capabilities::{
self,
v3::{
AdminCapability, Capabilities, GetLoginTokenCapability, ProfileFieldsCapability,
RoomVersionStability, RoomVersionsCapability, ThirdPartyIdChangesCapability,
},
},
},
assign,
@@ -50,6 +53,9 @@ pub(crate) async fn get_capabilities_route(
{
capabilities.account_moderation.lock = true;
capabilities.account_moderation.suspend = true;
capabilities.admin =
AdminCapability::new(BTreeSet::from_iter([OAuthClientScope::ServerAdministration]));
}
capabilities.profile_fields = Some(
+5 -3
View File
@@ -309,12 +309,14 @@ async fn check_access_token(
}
}
// Make sure the user has the right scopes to use the route
let user_scopes = if let Some(session_info) = services
let session_info = services
.oauth
.get_session_info_for_device(&sender_user, &sender_device)
.await
{
.map(Box::new);
// Make sure the user has the right scopes to use the route
let user_scopes = if let Some(session_info) = &session_info {
session_info.scopes()
} else {
let mut scopes = BTreeSet::from_iter([OAuthClientScope::ApiFullAccess]);