mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-15 13:16:56 +00:00
feat: Add support for MSC4540
This commit is contained in:
1 parent
0d48c9681d
commit
bc9b97e97f
4 files changed
+30
-21
No files matched your search
Generated
+11
-11
@@ -4947,7 +4947,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma"
|
name = "ruma"
|
||||||
version = "0.17.0"
|
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 = [
|
dependencies = [
|
||||||
"assign",
|
"assign",
|
||||||
"js_int",
|
"js_int",
|
||||||
@@ -4966,7 +4966,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-appservice-api"
|
name = "ruma-appservice-api"
|
||||||
version = "0.17.0"
|
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 = [
|
dependencies = [
|
||||||
"http",
|
"http",
|
||||||
"js_int",
|
"js_int",
|
||||||
@@ -4979,7 +4979,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-client-api"
|
name = "ruma-client-api"
|
||||||
version = "0.25.0"
|
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 = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"assign",
|
"assign",
|
||||||
@@ -5001,7 +5001,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-common"
|
name = "ruma-common"
|
||||||
version = "0.20.0"
|
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 = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"base64 0.23.1",
|
"base64 0.23.1",
|
||||||
@@ -5034,7 +5034,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-events"
|
name = "ruma-events"
|
||||||
version = "0.35.0"
|
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 = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"indexmap 2.14.2",
|
"indexmap 2.14.2",
|
||||||
@@ -5055,7 +5055,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-federation-api"
|
name = "ruma-federation-api"
|
||||||
version = "0.16.0"
|
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 = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"http",
|
"http",
|
||||||
@@ -5077,7 +5077,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-identifiers-validation"
|
name = "ruma-identifiers-validation"
|
||||||
version = "0.12.1"
|
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 = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"thiserror 2.0.21",
|
"thiserror 2.0.21",
|
||||||
@@ -5086,7 +5086,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-macros"
|
name = "ruma-macros"
|
||||||
version = "0.20.0"
|
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 = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
@@ -5102,7 +5102,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-push-gateway-api"
|
name = "ruma-push-gateway-api"
|
||||||
version = "0.16.0"
|
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 = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
@@ -5114,7 +5114,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-signatures"
|
name = "ruma-signatures"
|
||||||
version = "0.22.0"
|
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 = [
|
dependencies = [
|
||||||
"base64 0.23.1",
|
"base64 0.23.1",
|
||||||
"ed25519-dalek 3.0.0",
|
"ed25519-dalek 3.0.0",
|
||||||
@@ -5131,7 +5131,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-state-res"
|
name = "ruma-state-res"
|
||||||
version = "0.18.0"
|
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 = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
|
|||||||
+2
-1
@@ -348,7 +348,7 @@ version = "1.1.1"
|
|||||||
# Used for matrix spec type definitions and helpers
|
# Used for matrix spec type definitions and helpers
|
||||||
[workspace.dependencies.ruma]
|
[workspace.dependencies.ruma]
|
||||||
git = "https://github.com/gingershaped/ruwuma.git"
|
git = "https://github.com/gingershaped/ruwuma.git"
|
||||||
rev = "2bbec6d679310062f3f2db098dab3b7e97c1cf8f"
|
rev = "47d2b51360e1f87967ce191bcd4e96e66ac38936"
|
||||||
features = [
|
features = [
|
||||||
"appservice-api-c",
|
"appservice-api-c",
|
||||||
"client-api",
|
"client-api",
|
||||||
@@ -387,6 +387,7 @@ features = [
|
|||||||
"unstable-msc4466",
|
"unstable-msc4466",
|
||||||
"unstable-msc4494",
|
"unstable-msc4494",
|
||||||
"unstable-msc4484",
|
"unstable-msc4484",
|
||||||
|
"unstable-msc4540",
|
||||||
"unstable-extensible-events",
|
"unstable-extensible-events",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
use std::collections::BTreeMap;
|
use std::collections::{BTreeMap, BTreeSet};
|
||||||
|
|
||||||
use axum::extract::State;
|
use axum::extract::State;
|
||||||
use conduwuit::{Result, Server};
|
use conduwuit::{Result, Server};
|
||||||
use ruma::{
|
use ruma::{
|
||||||
RoomVersionId,
|
RoomVersionId,
|
||||||
api::client::discovery::get_capabilities::{
|
api::{
|
||||||
self,
|
OAuthClientScope,
|
||||||
v3::{
|
client::discovery::get_capabilities::{
|
||||||
Capabilities, GetLoginTokenCapability, ProfileFieldsCapability, RoomVersionStability,
|
self,
|
||||||
RoomVersionsCapability, ThirdPartyIdChangesCapability,
|
v3::{
|
||||||
|
AdminCapability, Capabilities, GetLoginTokenCapability, ProfileFieldsCapability,
|
||||||
|
RoomVersionStability, RoomVersionsCapability, ThirdPartyIdChangesCapability,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
assign,
|
assign,
|
||||||
@@ -50,6 +53,9 @@ pub(crate) async fn get_capabilities_route(
|
|||||||
{
|
{
|
||||||
capabilities.account_moderation.lock = true;
|
capabilities.account_moderation.lock = true;
|
||||||
capabilities.account_moderation.suspend = true;
|
capabilities.account_moderation.suspend = true;
|
||||||
|
|
||||||
|
capabilities.admin =
|
||||||
|
AdminCapability::new(BTreeSet::from_iter([OAuthClientScope::ServerAdministration]));
|
||||||
}
|
}
|
||||||
|
|
||||||
capabilities.profile_fields = Some(
|
capabilities.profile_fields = Some(
|
||||||
|
|||||||
@@ -309,12 +309,14 @@ async fn check_access_token(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the user has the right scopes to use the route
|
let session_info = services
|
||||||
let user_scopes = if let Some(session_info) = services
|
|
||||||
.oauth
|
.oauth
|
||||||
.get_session_info_for_device(&sender_user, &sender_device)
|
.get_session_info_for_device(&sender_user, &sender_device)
|
||||||
.await
|
.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()
|
session_info.scopes()
|
||||||
} else {
|
} else {
|
||||||
let mut scopes = BTreeSet::from_iter([OAuthClientScope::ApiFullAccess]);
|
let mut scopes = BTreeSet::from_iter([OAuthClientScope::ApiFullAccess]);
|
||||||
|
|||||||
Reference in new issue
Block a user