diff --git a/src/auth/routes/post_login.rs b/src/auth/routes/post_login.rs index 6b8e2673..3dad1f31 100644 --- a/src/auth/routes/post_login.rs +++ b/src/auth/routes/post_login.rs @@ -3,7 +3,7 @@ use actix_web::{http::header::LOCATION, web, HttpMessage, HttpRequest, HttpRespo use serde::Deserialize; use sqlx::PgPool; -use crate::{auth::utils::hash_plain_password_with_salt, models::user::User}; +use crate::{auth::utils::hash_plain_password_with_salt, models::User}; #[derive(Deserialize)] struct LoginForm { diff --git a/src/auth/routes/post_register.rs b/src/auth/routes/post_register.rs index 6e49d3dd..0fc96653 100644 --- a/src/auth/routes/post_register.rs +++ b/src/auth/routes/post_register.rs @@ -2,7 +2,7 @@ use actix_web::{http::header::LOCATION, web, HttpResponse, Responder}; use serde::Deserialize; use sqlx::PgPool; -use crate::{auth::utils::generate_salt_and_hash_plain_password, models::user::User}; +use crate::{auth::utils::generate_salt_and_hash_plain_password, models::User}; #[derive(Deserialize)] struct RegisterForm { diff --git a/src/calendar/delete_availabillity.rs b/src/calendar/delete_availabillity.rs index 51f3b35a..ac7ced26 100644 --- a/src/calendar/delete_availabillity.rs +++ b/src/calendar/delete_availabillity.rs @@ -3,7 +3,7 @@ use actix_web::{web, HttpResponse, Responder}; use serde::Deserialize; use sqlx::PgPool; -use crate::models::availabillity::Availabillity; +use crate::models::Availabillity; #[derive(Deserialize)] pub struct AvailabillityPath { diff --git a/src/calendar/get_availabillity_new.rs b/src/calendar/get_availabillity_new.rs index 1814a735..f1330b0f 100644 --- a/src/calendar/get_availabillity_new.rs +++ b/src/calendar/get_availabillity_new.rs @@ -6,12 +6,12 @@ use chrono::NaiveDate; use serde::Deserialize; use sqlx::PgPool; -use crate::models::{role::Role, user::User}; +use crate::models::User; #[derive(Template)] #[template(path = "availabillity_new.html")] struct AvailabillityNewTemplate { - user_role: Role, + user: User, date: NaiveDate } @@ -30,7 +30,7 @@ pub async fn get_availabillity_new( if let Some(user) = user { let current_user = User::read_by_id(pool.as_ref(), user.id().unwrap().parse().unwrap()).await.unwrap(); - let template = AvailabillityNewTemplate { user_role: current_user.role, date: query.date }; + let template = AvailabillityNewTemplate { user: current_user, date: query.date }; template.to_response() } else { diff --git a/src/calendar/post_availabillity.rs b/src/calendar/post_availabillity.rs index 570c7963..ef759b51 100644 --- a/src/calendar/post_availabillity.rs +++ b/src/calendar/post_availabillity.rs @@ -4,7 +4,7 @@ use chrono::{NaiveDate, NaiveTime}; use serde::Deserialize; use sqlx::PgPool; -use crate::models::{availabillity::Availabillity, user::User}; +use crate::models::{Availabillity, User}; #[derive(Deserialize)] pub struct AvailabillityForm { diff --git a/src/calendar/routes.rs b/src/calendar/routes.rs index a3818f46..2913e500 100644 --- a/src/calendar/routes.rs +++ b/src/calendar/routes.rs @@ -5,11 +5,14 @@ use chrono::{NaiveDate, Utc}; use serde::Deserialize; use sqlx::PgPool; -use crate::models::{ - area::Area, availabillity::Availabillity, event::Event, function, role::Role, user::User -}; +use crate::models::{Area, Availabillity, Event, Function, User}; -use super::{delete_availabillity::delete_availabillity, get_availabillity_new::get_availabillity_new, post_availabillity::post_availabillity, update_availabillity::{get_update_availabillity, post_update_availabillity}}; +use super::{ + delete_availabillity::delete_availabillity, + get_availabillity_new::get_availabillity_new, + post_availabillity::post_availabillity, + update_availabillity::{get_update_availabillity, post_update_availabillity}, +}; pub fn init(cfg: &mut web::ServiceConfig) { cfg.service(get_index); @@ -28,16 +31,13 @@ pub struct CalendarQuery { #[derive(Template)] #[template(path = "index.html")] struct CalendarTemplate { - user_role: Role, - current_user_id: i32, + user: User, date: NaiveDate, area: Area, events: Vec, availabillities: Vec, } -type Function = function::Function; - #[actix_web::get("/")] async fn get_index( user: Identity, @@ -60,8 +60,7 @@ async fn get_index( .unwrap(); let template = CalendarTemplate { - user_role: current_user.role, - current_user_id: current_user.id, + user: current_user, date, area, events, diff --git a/src/calendar/update_availabillity.rs b/src/calendar/update_availabillity.rs index 82590866..1a3b1004 100644 --- a/src/calendar/update_availabillity.rs +++ b/src/calendar/update_availabillity.rs @@ -5,14 +5,14 @@ use askama_actix::TemplateToResponse; use chrono::{NaiveDate, NaiveTime}; use sqlx::PgPool; -use crate::{calendar::post_availabillity::AvailabillityForm, models::{availabillity::Availabillity, role::Role, user::User}}; +use crate::{calendar::post_availabillity::AvailabillityForm, models::{Availabillity, User}}; use super::delete_availabillity::AvailabillityPath; #[derive(Template)] #[template(path = "availabillity_edit.html")] pub struct AvailabillityEditTemplate { - user_role: Role, + user: User, date: NaiveDate, id: i32, start_time: String, @@ -50,7 +50,7 @@ pub async fn get_update_availabillity( let comment = availabillity.comment.unwrap_or(String::new()); let template = AvailabillityEditTemplate { - user_role: current_user.role, + user: current_user, date: availabillity.date, id: path.id, start_time, @@ -73,10 +73,6 @@ pub async fn post_update_availabillity( path: web::Path, form: web::Form ) -> impl Responder { - let current_user = User::read_by_id(pool.as_ref(), user.id().unwrap().parse().unwrap()) - .await - .unwrap(); - if let Ok(mut availabillity) = Availabillity::read_by_id(pool.get_ref(), path.id).await { if availabillity.user_id == user.id().unwrap().parse::().unwrap() { let mut has_changed = false; diff --git a/src/models/event.rs b/src/models/event.rs index eb829874..1d2b53b9 100644 --- a/src/models/event.rs +++ b/src/models/event.rs @@ -1,5 +1,5 @@ use chrono::{NaiveDate, NaiveTime}; -use sqlx::{query, query_as, PgPool}; +use sqlx::{query, PgPool}; pub struct Event { pub id: i32, diff --git a/src/models/mod.rs b/src/models/mod.rs index d9b81335..9b760691 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -1,9 +1,17 @@ -pub mod role; -pub mod function; -pub mod user; -pub mod event; -pub mod area; -pub mod vehicle; -pub mod availabillity; -pub mod assignement; -pub mod location; +mod area; +mod assignement; +mod availabillity; +mod event; +mod function; +mod location; +mod role; +mod user; +mod vehicle; + +pub use area::Area; +pub use availabillity::Availabillity; +pub use event::Event; +pub use function::Function; +pub use location::Location; +pub use role::Role; +pub use user::User; diff --git a/src/models/role.rs b/src/models/role.rs index 0d10a50b..d2d5d710 100644 --- a/src/models/role.rs +++ b/src/models/role.rs @@ -1,4 +1,4 @@ -#[derive(sqlx::Type, Debug, Clone)] +#[derive(sqlx::Type, Debug, Clone, PartialEq)] #[sqlx(type_name = "role", rename_all = "lowercase")] pub enum Role { Staff = 1, diff --git a/src/models/user.rs b/src/models/user.rs index 964e1c34..604bed58 100644 --- a/src/models/user.rs +++ b/src/models/user.rs @@ -1,7 +1,7 @@ use chrono::{DateTime, Utc}; use sqlx::PgPool; -use super::{function::Function, role::Role}; +use super::{Function, Role}; #[derive(Clone)] pub struct User { diff --git a/templates/index.html b/templates/index.html index dca41661..24709759 100644 --- a/templates/index.html +++ b/templates/index.html @@ -98,7 +98,7 @@ {{ availabillity.comment.as_deref().unwrap_or("") }} - {% if availabillity.user_id == current_user_id %} + {% if availabillity.user_id == user.id %}
Bearbeiten diff --git a/templates/nav.html b/templates/nav.html index 8b334ac4..4a0fd110 100644 --- a/templates/nav.html +++ b/templates/nav.html @@ -20,7 +20,7 @@ Kalender - {% match user_role %} + {% match user.role %} {% when AreaManager %} Planung