mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-14 12:46:49 +00:00
feat: Implement oauth auth code and refresh token flows
This commit is contained in:
39 files changed
+1052
-154
No files matched your search
@@ -1,7 +1,8 @@
|
||||
use axum::extract::State;
|
||||
use conduwuit::Result;
|
||||
use ruma::{api::client::discovery::get_authorization_server_metadata, serde::Raw};
|
||||
use serde_json::json;
|
||||
use serde_json::{Value, json};
|
||||
use service::Services;
|
||||
|
||||
use crate::Ruma;
|
||||
|
||||
@@ -9,13 +10,19 @@ pub(crate) async fn get_authorization_server_metadata_route(
|
||||
State(services): State<crate::State>,
|
||||
_body: Ruma<get_authorization_server_metadata::v1::Request>,
|
||||
) -> Result<get_authorization_server_metadata::v1::Response> {
|
||||
let metadata = Raw::new(&authorization_server_metadata(&services).await).unwrap();
|
||||
|
||||
Ok(get_authorization_server_metadata::v1::Response::new(metadata.cast_unchecked()))
|
||||
}
|
||||
|
||||
pub(crate) async fn authorization_server_metadata(services: &Services) -> Value {
|
||||
let endpoint_base = services
|
||||
.config
|
||||
.get_client_domain()
|
||||
.join(super::BASE_PATH)
|
||||
.unwrap();
|
||||
|
||||
let metadata = Raw::new(&json!({
|
||||
json!({
|
||||
"authorization_endpoint": endpoint_base.join("grant/authorization_code").unwrap(),
|
||||
"code_challenge_methods_supported": ["S256"],
|
||||
"grant_types_supported": ["authorization_code", "refresh_token"],
|
||||
@@ -27,8 +34,5 @@ pub(crate) async fn get_authorization_server_metadata_route(
|
||||
"response_types_supported": ["code"],
|
||||
"revocation_endpoint": endpoint_base.join("client/revoke").unwrap(),
|
||||
"token_endpoint": endpoint_base.join("grant/token").unwrap(),
|
||||
}))
|
||||
.unwrap();
|
||||
|
||||
Ok(get_authorization_server_metadata::v1::Response::new(metadata.cast_unchecked()))
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user