From 14e5533b6fbeb4cb6a208e0e5f3f6b69e412bb69 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Sun, 13 Apr 2025 19:00:51 +0200 Subject: [PATCH] Move nextcloud_login to frontend crate --- Cargo.lock | 22 ++---------------- Cargo.toml | 2 -- crates/frontend/Cargo.toml | 3 +++ .../public/templates/pages/login.html | 4 ++-- .../pages/nextcloud_login/form.html} | 0 .../pages/nextcloud_login/success.html} | 0 crates/frontend/src/lib.rs | 1 + .../src/nextcloud_login.rs} | 8 +++---- crates/nextcloud_login/Cargo.toml | 23 ------------------- crates/nextcloud_login/askama.toml | 2 -- .../public/templates/layouts/default.html | 16 ------------- crates/store/src/auth/middleware.rs | 2 +- src/app.rs | 6 ++--- src/main.rs | 4 ++-- 14 files changed, 18 insertions(+), 75 deletions(-) rename crates/{nextcloud_login/public/templates/pages/nextcloud_login_form.html => frontend/public/templates/pages/nextcloud_login/form.html} (100%) rename crates/{nextcloud_login/public/templates/pages/nextcloud_login_success.html => frontend/public/templates/pages/nextcloud_login/success.html} (100%) rename crates/{nextcloud_login/src/lib.rs => frontend/src/nextcloud_login.rs} (97%) delete mode 100644 crates/nextcloud_login/Cargo.toml delete mode 100644 crates/nextcloud_login/askama.toml delete mode 100644 crates/nextcloud_login/public/templates/layouts/default.html diff --git a/Cargo.lock b/Cargo.lock index d86d1fb..f7b79fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3012,7 +3012,6 @@ dependencies = [ "rustical_carddav", "rustical_dav", "rustical_frontend", - "rustical_nextcloud_login", "rustical_store", "rustical_store_sqlite", "serde", @@ -3105,30 +3104,13 @@ dependencies = [ "actix-web", "askama", "askama_web", - "futures-core", - "hex", - "mime_guess", - "openidconnect", - "reqwest", - "rust-embed", - "rustical_store", - "serde", - "thiserror 2.0.12", - "tokio", -] - -[[package]] -name = "rustical_nextcloud_login" -version = "0.1.0" -dependencies = [ - "actix-session", - "actix-web", - "askama", "chrono", "futures-core", "hex", "mime_guess", + "openidconnect", "rand 0.8.5", + "reqwest", "rust-embed", "rustical_store", "serde", diff --git a/Cargo.toml b/Cargo.toml index a8ae2f1..8d7d20a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,6 @@ rustical_caldav = { path = "./crates/caldav/" } rustical_carddav = { path = "./crates/carddav/" } rustical_frontend = { path = "./crates/frontend/" } rustical_xml = { path = "./crates/xml/" } -rustical_nextcloud_login = { path = "./crates/nextcloud_login/" } chrono-tz = "0.10" rand = "0.8" argon2 = "0.5" @@ -152,5 +151,4 @@ pbkdf2.workspace = true password-hash.workspace = true reqwest.workspace = true rustical_dav.workspace = true -rustical_nextcloud_login.workspace = true quick-xml.workspace = true diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index 8a49fa1..37f580e 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -21,3 +21,6 @@ futures-core.workspace = true hex.workspace = true mime_guess.workspace = true reqwest.workspace = true +rand.workspace = true +chrono.workspace = true +uuid.workspace = true diff --git a/crates/frontend/public/templates/pages/login.html b/crates/frontend/public/templates/pages/login.html index 52c3d40..044a71e 100644 --- a/crates/frontend/public/templates/pages/login.html +++ b/crates/frontend/public/templates/pages/login.html @@ -17,6 +17,6 @@ {% if let Some(OidcProviderData {name, redirect_url}) = oidc_data %} Login with {{ name }} {% endif %} - - {% endblock %} + +{% endblock %} diff --git a/crates/nextcloud_login/public/templates/pages/nextcloud_login_form.html b/crates/frontend/public/templates/pages/nextcloud_login/form.html similarity index 100% rename from crates/nextcloud_login/public/templates/pages/nextcloud_login_form.html rename to crates/frontend/public/templates/pages/nextcloud_login/form.html diff --git a/crates/nextcloud_login/public/templates/pages/nextcloud_login_success.html b/crates/frontend/public/templates/pages/nextcloud_login/success.html similarity index 100% rename from crates/nextcloud_login/public/templates/pages/nextcloud_login_success.html rename to crates/frontend/public/templates/pages/nextcloud_login/success.html diff --git a/crates/frontend/src/lib.rs b/crates/frontend/src/lib.rs index 9bd834d..b72e6b5 100644 --- a/crates/frontend/src/lib.rs +++ b/crates/frontend/src/lib.rs @@ -26,6 +26,7 @@ use std::sync::Arc; mod assets; mod config; +pub mod nextcloud_login; mod oidc; mod routes; diff --git a/crates/nextcloud_login/src/lib.rs b/crates/frontend/src/nextcloud_login.rs similarity index 97% rename from crates/nextcloud_login/src/lib.rs rename to crates/frontend/src/nextcloud_login.rs index cef7beb..07bb96e 100644 --- a/crates/nextcloud_login/src/lib.rs +++ b/crates/frontend/src/nextcloud_login.rs @@ -1,11 +1,11 @@ use actix_web::{ + HttpRequest, HttpResponse, Responder, http::header::{self}, web::{self, Data, Form, Html, Json, Path, ServiceConfig}, - HttpRequest, HttpResponse, Responder, }; use askama::Template; use chrono::{DateTime, Duration, Utc}; -use rand::{distributions::Alphanumeric, Rng}; +use rand::{Rng, distributions::Alphanumeric}; use rustical_store::auth::{AuthenticationMiddleware, AuthenticationProvider, User}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, sync::Arc}; @@ -141,7 +141,7 @@ fn generate_app_token() -> String { } #[derive(Template)] -#[template(path = "pages/nextcloud_login_form.html")] +#[template(path = "pages/nextcloud_login/form.html")] struct NextcloudLoginPage { username: String, app_name: String, @@ -176,7 +176,7 @@ struct NextcloudAuthorizeForm { } #[derive(Template)] -#[template(path = "pages/nextcloud_login_success.html")] +#[template(path = "pages/nextcloud_login/success.html")] struct NextcloudLoginSuccessPage { app_name: String, } diff --git a/crates/nextcloud_login/Cargo.toml b/crates/nextcloud_login/Cargo.toml deleted file mode 100644 index ea8330f..0000000 --- a/crates/nextcloud_login/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "rustical_nextcloud_login" -version.workspace = true -edition.workspace = true -description.workspace = true -repository.workspace = true -publish = false - -[dependencies] -askama.workspace = true -actix-session = { workspace = true } -serde = { workspace = true } -thiserror = { workspace = true } -tokio = { workspace = true } -actix-web = { workspace = true } -rustical_store = { workspace = true } -rust-embed.workspace = true -futures-core.workspace = true -hex.workspace = true -mime_guess.workspace = true -rand.workspace = true -uuid.workspace = true -chrono.workspace = true diff --git a/crates/nextcloud_login/askama.toml b/crates/nextcloud_login/askama.toml deleted file mode 100644 index 893df5b..0000000 --- a/crates/nextcloud_login/askama.toml +++ /dev/null @@ -1,2 +0,0 @@ -[general] -dirs = ["public/templates"] diff --git a/crates/nextcloud_login/public/templates/layouts/default.html b/crates/nextcloud_login/public/templates/layouts/default.html deleted file mode 100644 index c9535a9..0000000 --- a/crates/nextcloud_login/public/templates/layouts/default.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - {% block title %}RustiCal{% endblock %} - {% block imports %}{% endblock %} - - - -
- {% block content %}

Placeholder

{% endblock %} -
- - diff --git a/crates/store/src/auth/middleware.rs b/crates/store/src/auth/middleware.rs index 6013fd9..292b1b9 100644 --- a/crates/store/src/auth/middleware.rs +++ b/crates/store/src/auth/middleware.rs @@ -1,4 +1,4 @@ -use super::{AuthenticationProvider, User}; +use super::AuthenticationProvider; use actix_session::Session; use actix_web::{ FromRequest, HttpMessage, diff --git a/src/app.rs b/src/app.rs index cce3157..198bd59 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,11 +1,11 @@ use actix_web::body::MessageBody; use actix_web::dev::{ServiceFactory, ServiceRequest, ServiceResponse}; use actix_web::middleware::NormalizePath; -use actix_web::{web, App}; +use actix_web::{App, web}; use rustical_caldav::caldav_service; use rustical_carddav::carddav_service; -use rustical_frontend::{configure_frontend, FrontendConfig}; -use rustical_nextcloud_login::{configure_nextcloud_login, NextcloudFlows}; +use rustical_frontend::nextcloud_login::{NextcloudFlows, configure_nextcloud_login}; +use rustical_frontend::{FrontendConfig, configure_frontend}; use rustical_store::auth::AuthenticationProvider; use rustical_store::{AddressbookStore, CalendarStore, SubscriptionStore}; use std::sync::Arc; diff --git a/src/main.rs b/src/main.rs index ce381e8..7a7a4ab 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use config::{DataStoreConfig, SqliteDataStoreConfig}; use figment::Figment; use figment::providers::{Env, Format, Toml}; use rustical_dav::push::push_notifier; -use rustical_nextcloud_login::NextcloudFlows; +use rustical_frontend::nextcloud_login::NextcloudFlows; use rustical_store::auth::TomlPrincipalStore; use rustical_store::{AddressbookStore, CalendarStore, CollectionOperation, SubscriptionStore}; use rustical_store_sqlite::addressbook_store::SqliteAddressbookStore; @@ -131,7 +131,7 @@ mod tests { use anyhow::anyhow; use async_trait::async_trait; use rustical_frontend::FrontendConfig; - use rustical_nextcloud_login::NextcloudFlows; + use rustical_frontend::nextcloud_login::NextcloudFlows; use rustical_store::auth::AuthenticationProvider; use std::sync::Arc;