Added oauth2 OIDC support
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user