Added oauth2 OIDC support

This commit is contained in:
Ultradesu
2026-03-17 14:23:49 +00:00
parent 46ba3d5490
commit ec4c53497f
5 changed files with 1797 additions and 60 deletions

View File

@@ -18,13 +18,20 @@ use axum::{
pub struct WebState {
pub root: Arc<PathBuf>,
pub token: Arc<String>,
pub oidc: Option<Arc<OidcState>>,
}
pub struct OidcState {
pub client: openidconnect::core::CoreClient,
pub session_secret: Vec<u8>,
}
/// Build the axum Router for the web player.
pub fn build_router(root: PathBuf, token: String) -> Router {
pub fn build_router(root: PathBuf, token: String, oidc: Option<Arc<OidcState>>) -> Router {
let state = WebState {
root: Arc::new(root),
token: Arc::new(token),
oidc,
};
let api = Router::new()
@@ -40,6 +47,8 @@ pub fn build_router(root: PathBuf, token: String) -> Router {
Router::new()
.route("/login", get(auth::login_page).post(auth::login_submit))
.route("/logout", get(auth::logout))
.route("/auth/login", get(auth::oidc_login))
.route("/auth/callback", get(auth::oidc_callback))
.merge(authed_routes)
.with_state(state)
}