feat: Add support for MSC4540

This commit is contained in:
Ginger
2026-10-05 14:22:53 +00:00
committed by Ellis Git
parent 0d48c9681d
commit bc9b97e97f
4 changed files with 30 additions and 21 deletions
Generated
+11 -11
View File
@@ -4947,7 +4947,7 @@ dependencies = [
[[package]]
name = "ruma"
version = "0.17.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"assign",
"js_int",
@@ -4966,7 +4966,7 @@ dependencies = [
[[package]]
name = "ruma-appservice-api"
version = "0.17.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"http",
"js_int",
@@ -4979,7 +4979,7 @@ dependencies = [
[[package]]
name = "ruma-client-api"
version = "0.25.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"as_variant",
"assign",
@@ -5001,7 +5001,7 @@ dependencies = [
[[package]]
name = "ruma-common"
version = "0.20.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"as_variant",
"base64 0.23.1",
@@ -5034,7 +5034,7 @@ dependencies = [
[[package]]
name = "ruma-events"
version = "0.35.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"as_variant",
"indexmap 2.14.2",
@@ -5055,7 +5055,7 @@ dependencies = [
[[package]]
name = "ruma-federation-api"
version = "0.16.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"bytes",
"http",
@@ -5077,7 +5077,7 @@ dependencies = [
[[package]]
name = "ruma-identifiers-validation"
version = "0.12.1"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"js_int",
"thiserror 2.0.21",
@@ -5086,7 +5086,7 @@ dependencies = [
[[package]]
name = "ruma-macros"
version = "0.20.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"as_variant",
"cfg-if",
@@ -5102,7 +5102,7 @@ dependencies = [
[[package]]
name = "ruma-push-gateway-api"
version = "0.16.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"js_int",
"ruma-common",
@@ -5114,7 +5114,7 @@ dependencies = [
[[package]]
name = "ruma-signatures"
version = "0.22.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"base64 0.23.1",
"ed25519-dalek 3.0.0",
@@ -5131,7 +5131,7 @@ dependencies = [
[[package]]
name = "ruma-state-res"
version = "0.18.0"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=2bbec6d679310062f3f2db098dab3b7e97c1cf8f#2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
source = "git+https://github.com/gingershaped/ruwuma.git?rev=47d2b51360e1f87967ce191bcd4e96e66ac38936#47d2b51360e1f87967ce191bcd4e96e66ac38936"
dependencies = [
"js_int",
"ruma-common",
+2 -1
View File
@@ -348,7 +348,7 @@ version = "1.1.1"
# Used for matrix spec type definitions and helpers
[workspace.dependencies.ruma]
git = "https://github.com/gingershaped/ruwuma.git"
rev = "2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
rev = "47d2b51360e1f87967ce191bcd4e96e66ac38936"
features = [
"appservice-api-c",
"client-api",
@@ -387,6 +387,7 @@ features = [
"unstable-msc4466",
"unstable-msc4494",
"unstable-msc4484",
"unstable-msc4540",
"unstable-extensible-events",
]
+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]);