blog/backend/server/src/configuration.rs
SquidSpirit dd0567c937
All checks were successful
Frontend CI / build (push) Successful in 1m7s
BLOG-85 Implement OIDC authentication (#93)
### Description

- Login with configured OIDC issuer, and then save the logged in information in server session.
- Endpoints:
  - GET `/auth/login`
  - GET `/auth/callback`
  - GET `/auth/logout`

### Package Changes

```toml
actix-session = { version = "0.10.1", features = ["redis-session"] }
hex = "0.4.3"
openidconnect = { version = "4.0.1", features = [
    "reqwest",
    "reqwest-blocking",
] }
```

### Screenshots

<video src="attachments/8b15b576-61db-41b9-8587-b4b885018c93" title="Screencast From 2025-07-30 03-34-26.mp4" controls></video>

### Reference

Resolves #85

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #93
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-30 03:46:49 +08:00

34 lines
871 B
Rust

use openidconnect::reqwest;
use crate::configuration::{
db::DbConfiguration, oidc::OidcConfiguration, server::ServerConfiguration,
session::SessionConfiguration, storage::StorageConfiguration,
};
pub mod db;
pub mod oidc;
pub mod server;
pub mod session;
pub mod storage;
#[derive(Clone)]
pub struct Configuration {
pub db: DbConfiguration,
pub oidc: OidcConfiguration,
pub server: ServerConfiguration,
pub session: SessionConfiguration,
pub storage: StorageConfiguration,
}
impl Configuration {
pub async fn new(http_client: reqwest::Client) -> Self {
Self {
db: DbConfiguration::new(),
oidc: OidcConfiguration::new(http_client).await,
server: ServerConfiguration::new(),
session: SessionConfiguration::new(),
storage: StorageConfiguration::new(),
}
}
}