From 76090d4266342ed84cd90144982fad4edd7848a7 Mon Sep 17 00:00:00 2001 From: eraden Date: Sun, 6 Aug 2023 22:14:03 +0200 Subject: [PATCH] Extract language --- Cargo.lock | 3 +++ crates/oswilno-admin/Cargo.toml | 1 + crates/oswilno-admin/src/lib.rs | 2 +- crates/oswilno-session/src/lib.rs | 36 +++++++++++++------------------ crates/oswilno-view/Cargo.toml | 2 ++ crates/oswilno-view/src/lib.rs | 9 +++----- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f17db16..39c09cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2341,6 +2341,7 @@ dependencies = [ "chrono", "oswilno-contract", "tera", + "tracing", "uuid", ] @@ -2413,7 +2414,9 @@ dependencies = [ name = "oswilno-view" version = "0.1.0" dependencies = [ + "actix-web", "askama", + "futures-core", "garde", "tracing", ] diff --git a/crates/oswilno-admin/Cargo.toml b/crates/oswilno-admin/Cargo.toml index 50613ed..5e3e778 100644 --- a/crates/oswilno-admin/Cargo.toml +++ b/crates/oswilno-admin/Cargo.toml @@ -14,3 +14,4 @@ chrono = "0.4.26" oswilno-contract = { path = "../oswilno-contract" } tera = "1.17.1" uuid = { version = "1.4.1", features = ["v4"] } +tracing = "0.1.37" diff --git a/crates/oswilno-admin/src/lib.rs b/crates/oswilno-admin/src/lib.rs index 807e605..b5fb659 100644 --- a/crates/oswilno-admin/src/lib.rs +++ b/crates/oswilno-admin/src/lib.rs @@ -36,7 +36,7 @@ fn create_actix_admin_builder() -> ActixAdminBuilder { admin_builder.add_entity_to_category::(&view, "Parking spaces"); } for scope in admin_builder.scopes.keys() { - eprintln!("Scope {scope:?}"); + tracing::trace!("Scope {scope:?}"); } admin_builder diff --git a/crates/oswilno-session/src/lib.rs b/crates/oswilno-session/src/lib.rs index 84efea0..46b87a0 100644 --- a/crates/oswilno-session/src/lib.rs +++ b/crates/oswilno-session/src/lib.rs @@ -29,12 +29,12 @@ pub type UserSession = Authenticated; #[derive(Clone, Copy)] pub struct JWTTtl(time::Duration); -#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq)] +#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq, Hash)] enum Audience { Web, } -#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq)] +#[derive(Debug, Serialize, Deserialize, Clone, Eq, PartialEq, Hash)] pub struct Claims { #[serde(rename = "exp")] expires_at: usize, @@ -193,19 +193,14 @@ async fn login( db: Data, payload: Form, t: Data, + lang: Lang, ) -> Result { let t = t.into_inner(); match login_inner(jwt_encoding_key, jwt_ttl, db, payload).await { Ok(res) => Ok(HttpResponse::Ok().json(res)), - Err(form) => Ok(HttpResponse::Ok().body( - SignInPartialTemplate { - form, - lang: Lang::Pl, - t, - } - .render() - .unwrap(), - )), + Err(form) => { + Ok(HttpResponse::Ok().body(SignInPartialTemplate { form, lang, t }.render().unwrap())) + } } } @@ -337,6 +332,7 @@ async fn register( db: Data, payload: Form, t: Data, + lang: Lang, ) -> Result { let t = t.into_inner(); let mut errors = oswilno_view::Errors::default(); @@ -347,7 +343,7 @@ async fn register( RegisterPartialTemplate { form: p, t, - lang: Lang::Pl, + lang, errors, } .render() @@ -433,6 +429,7 @@ async fn register_internal( email_taken, }) { errors.consume_garde(e); + return Err(p); } tracing::warn!("{errors:#?}"); @@ -443,7 +440,7 @@ async fn register_internal( return Ok(HttpResponse::InternalServerError().body("")); } }; - let model = match (ActiveModel { + let model = (ActiveModel { id: NotSet, login: Set(p.input_login.to_string()), email: Set(p.email.to_string()), @@ -452,14 +449,11 @@ async fn register_internal( }) .save(&*db) .await - { - Ok(model) => model, - Err(e) => { - tracing::warn!("{e}"); - errors.push_global("Login or email already taken"); - return Err(p); - } - }; + .map_err(|e| { + tracing::warn!("{e}"); + errors.push_global("Login or email already taken"); + p + })?; tracing::info!("{model:?}"); diff --git a/crates/oswilno-view/Cargo.toml b/crates/oswilno-view/Cargo.toml index d7c07ce..f523f55 100644 --- a/crates/oswilno-view/Cargo.toml +++ b/crates/oswilno-view/Cargo.toml @@ -4,6 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] +actix-web = "4.3.1" askama = { version = "0.12.0", features = ["serde", "with-actix-web", "comrak", "mime"] } +futures-core = "0.3.28" garde = { version = "0.14.0", features = ["derive"] } tracing = "0.1.37" diff --git a/crates/oswilno-view/src/lib.rs b/crates/oswilno-view/src/lib.rs index 7b87715..50076c5 100644 --- a/crates/oswilno-view/src/lib.rs +++ b/crates/oswilno-view/src/lib.rs @@ -1,7 +1,10 @@ use std::collections::HashMap; use std::sync::{Arc, RwLock}; +pub use lang::*; + pub mod filters; +pub mod lang; #[derive(Debug, Clone, Default)] pub struct Errors { @@ -50,12 +53,6 @@ impl From for Errors { } } -#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug)] -pub enum Lang { - Pl, - En, -} - #[derive(Clone, Debug)] pub struct TranslationStorage { storage: Arc>>>,