diff --git a/bbox-common/Cargo.toml b/bbox-common/Cargo.toml index 2551ffe0..84780d70 100644 --- a/bbox-common/Cargo.toml +++ b/bbox-common/Cargo.toml @@ -5,6 +5,7 @@ edition = "2018" [features] html = [] +oidc = ["openidconnect", "reqwest"] [dependencies] actix-session = { version = "0.7", features = ["cookie-session"] } @@ -24,12 +25,12 @@ mime_guess = "2.0.3" minijinja = { workspace = true } num_cpus = { workspace = true } once_cell = "1.8.0" -openidconnect = "3.2.0" +openidconnect = { version = "3.2.0", optional = true } opentelemetry = { workspace = true } opentelemetry-jaeger = { version = "0.17", features = ["rt-tokio"] } opentelemetry-prometheus = { version = "0.11" } prometheus = { workspace = true } -reqwest = { workspace = true } +reqwest = { workspace = true, optional = true } rust-embed = { workspace = true } rustls = "0.20.8" # Same as actix-tls -> tokio-rustls rustls-pemfile = "1.0.2" diff --git a/bbox-common/src/auth/mod.rs b/bbox-common/src/auth/mod.rs index 7d0dbba3..57f0871b 100644 --- a/bbox-common/src/auth/mod.rs +++ b/bbox-common/src/auth/mod.rs @@ -1,6 +1,38 @@ +#[cfg(feature = "oidc")] pub mod oidc; pub struct Identity { pub username: String, pub groups: Vec, } + +#[cfg(not(feature = "oidc"))] +pub mod oidc { + use super::Identity; + use serde::Deserialize; + + type AuthError = std::io::Error; + + #[derive(Deserialize, Default, Clone, Debug)] + pub struct OidcAuthCfg; + + #[derive(Default, Clone)] + pub struct OidcClient { + pub authorize_url: String, + } + + impl OidcClient { + pub async fn from_config(_cfg: &OidcAuthCfg) -> Self { + Self::default() + } + } + + #[derive(Deserialize)] + pub struct AuthRequest; + + impl AuthRequest { + pub async fn auth(&self, _oidc: &OidcClient) -> Result { + unimplemented!() + } + } +}