Move oidc to dedicated crate

This commit is contained in:
Lennart
2025-04-20 21:40:03 +02:00
parent 5e4cdc6a12
commit be9712241c
12 changed files with 42 additions and 11 deletions

17
Cargo.lock generated
View File

@@ -3037,6 +3037,7 @@ dependencies = [
"rustical_dav", "rustical_dav",
"rustical_dav_push", "rustical_dav_push",
"rustical_frontend", "rustical_frontend",
"rustical_oidc",
"rustical_store", "rustical_store",
"rustical_store_sqlite", "rustical_store_sqlite",
"serde", "serde",
@@ -3157,10 +3158,9 @@ dependencies = [
"futures-core", "futures-core",
"hex", "hex",
"mime_guess", "mime_guess",
"openidconnect",
"rand 0.8.5", "rand 0.8.5",
"reqwest",
"rust-embed", "rust-embed",
"rustical_oidc",
"rustical_store", "rustical_store",
"serde", "serde",
"thiserror 2.0.12", "thiserror 2.0.12",
@@ -3170,6 +3170,19 @@ dependencies = [
"uuid", "uuid",
] ]
[[package]]
name = "rustical_oidc"
version = "0.1.0"
dependencies = [
"actix-session",
"actix-web",
"openidconnect",
"reqwest",
"rustical_store",
"serde",
"thiserror 2.0.12",
]
[[package]] [[package]]
name = "rustical_store" name = "rustical_store"
version = "0.1.0" version = "0.1.0"

View File

@@ -95,6 +95,7 @@ rustical_caldav = { path = "./crates/caldav/" }
rustical_carddav = { path = "./crates/carddav/" } rustical_carddav = { path = "./crates/carddav/" }
rustical_frontend = { path = "./crates/frontend/" } rustical_frontend = { path = "./crates/frontend/" }
rustical_xml = { path = "./crates/xml/" } rustical_xml = { path = "./crates/xml/" }
rustical_oidc = { path = "./crates/oidc/" }
chrono-tz = "0.10" chrono-tz = "0.10"
chrono-humanize = "0.2" chrono-humanize = "0.2"
rand = "0.8" rand = "0.8"
@@ -157,4 +158,5 @@ password-hash.workspace = true
reqwest.workspace = true reqwest.workspace = true
rustical_dav.workspace = true rustical_dav.workspace = true
rustical_dav_push.workspace = true rustical_dav_push.workspace = true
rustical_oidc.workspace = true
quick-xml.workspace = true quick-xml.workspace = true

View File

@@ -7,7 +7,6 @@ repository.workspace = true
publish = false publish = false
[dependencies] [dependencies]
openidconnect.workspace = true
askama.workspace = true askama.workspace = true
askama_web.workspace = true askama_web.workspace = true
actix-session = { workspace = true } actix-session = { workspace = true }
@@ -20,10 +19,10 @@ rust-embed.workspace = true
futures-core.workspace = true futures-core.workspace = true
hex.workspace = true hex.workspace = true
mime_guess.workspace = true mime_guess.workspace = true
reqwest.workspace = true
rand.workspace = true rand.workspace = true
chrono.workspace = true chrono.workspace = true
chrono-humanize.workspace = true chrono-humanize.workspace = true
uuid.workspace = true uuid.workspace = true
url.workspace = true url.workspace = true
tracing.workspace = true tracing.workspace = true
rustical_oidc.workspace = true

View File

@@ -1,4 +1,3 @@
pub use crate::oidc::OidcConfig;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
fn default_true() -> bool { fn default_true() -> bool {

View File

@@ -14,13 +14,13 @@ use actix_web::{
use askama::Template; use askama::Template;
use askama_web::WebTemplate; use askama_web::WebTemplate;
use assets::{Assets, EmbedService}; use assets::{Assets, EmbedService};
use oidc::configure_oidc;
use rand::{Rng, distributions::Alphanumeric}; use rand::{Rng, distributions::Alphanumeric};
use routes::{ use routes::{
addressbook::{route_addressbook, route_addressbook_restore}, addressbook::{route_addressbook, route_addressbook_restore},
calendar::{route_calendar, route_calendar_restore}, calendar::{route_calendar, route_calendar_restore},
login::{route_get_login, route_post_login, route_post_logout}, login::{route_get_login, route_post_login, route_post_logout},
}; };
use rustical_oidc::{OidcConfig, configure_oidc};
use rustical_store::{ use rustical_store::{
Addressbook, AddressbookStore, Calendar, CalendarStore, Addressbook, AddressbookStore, Calendar, CalendarStore,
auth::{AuthenticationMiddleware, AuthenticationProvider, User}, auth::{AuthenticationMiddleware, AuthenticationProvider, User},
@@ -31,13 +31,12 @@ use std::sync::Arc;
mod assets; mod assets;
mod config; mod config;
pub mod nextcloud_login; pub mod nextcloud_login;
mod oidc;
mod routes; mod routes;
pub const ROUTE_NAME_HOME: &str = "frontend_home"; pub const ROUTE_NAME_HOME: &str = "frontend_home";
pub const ROUTE_USER_NAMED: &str = "frontend_user_named"; pub const ROUTE_USER_NAMED: &str = "frontend_user_named";
pub use config::{FrontendConfig, OidcConfig}; pub use config::FrontendConfig;
pub fn generate_app_token() -> String { pub fn generate_app_token() -> String {
rand::thread_rng() rand::thread_rng()

View File

@@ -1,4 +1,4 @@
use crate::{FrontendConfig, OidcConfig, oidc::ROUTE_NAME_OIDC_LOGIN}; use crate::{FrontendConfig, OidcConfig};
use actix_session::Session; use actix_session::Session;
use actix_web::{ use actix_web::{
HttpRequest, HttpResponse, Responder, HttpRequest, HttpResponse, Responder,
@@ -7,6 +7,7 @@ use actix_web::{
}; };
use askama::Template; use askama::Template;
use askama_web::WebTemplate; use askama_web::WebTemplate;
use rustical_oidc::ROUTE_NAME_OIDC_LOGIN;
use rustical_store::auth::AuthenticationProvider; use rustical_store::auth::AuthenticationProvider;
use serde::Deserialize; use serde::Deserialize;
use tracing::instrument; use tracing::instrument;

16
crates/oidc/Cargo.toml Normal file
View File

@@ -0,0 +1,16 @@
[package]
name = "rustical_oidc"
version.workspace = true
edition.workspace = true
description.workspace = true
repository.workspace = true
[dependencies]
openidconnect.workspace = true
serde = { workspace = true }
reqwest.workspace = true
# TODO: Remove this dependency
rustical_store = { workspace = true }
actix-web = { workspace = true }
actix-session = { workspace = true }
thiserror = { workspace = true }

View File

@@ -5,7 +5,8 @@ use actix_web::{App, web};
use rustical_caldav::caldav_service; use rustical_caldav::caldav_service;
use rustical_carddav::carddav_service; use rustical_carddav::carddav_service;
use rustical_frontend::nextcloud_login::{NextcloudFlows, configure_nextcloud_login}; use rustical_frontend::nextcloud_login::{NextcloudFlows, configure_nextcloud_login};
use rustical_frontend::{FrontendConfig, OidcConfig, configure_frontend}; use rustical_frontend::{FrontendConfig, configure_frontend};
use rustical_oidc::OidcConfig;
use rustical_store::auth::AuthenticationProvider; use rustical_store::auth::AuthenticationProvider;
use rustical_store::{AddressbookStore, CalendarStore, SubscriptionStore}; use rustical_store::{AddressbookStore, CalendarStore, SubscriptionStore};
use std::sync::Arc; use std::sync::Arc;

View File

@@ -1,4 +1,5 @@
use rustical_frontend::{FrontendConfig, OidcConfig}; use rustical_frontend::FrontendConfig;
use rustical_oidc::OidcConfig;
use rustical_store::auth::TomlUserStoreConfig; use rustical_store::auth::TomlUserStoreConfig;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};