refactor: move modules and use whole user in templates
This commit is contained in:
parent
b736b04ced
commit
a06f86dcaa
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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<Event>,
|
||||
availabillities: Vec<Availabillity>,
|
||||
}
|
||||
|
||||
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,
|
||||
|
@ -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<AvailabillityPath>,
|
||||
form: web::Form<AvailabillityForm>
|
||||
) -> 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::<i32>().unwrap() {
|
||||
let mut has_changed = false;
|
||||
|
@ -1,5 +1,5 @@
|
||||
use chrono::{NaiveDate, NaiveTime};
|
||||
use sqlx::{query, query_as, PgPool};
|
||||
use sqlx::{query, PgPool};
|
||||
|
||||
pub struct Event {
|
||||
pub id: i32,
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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 {
|
||||
|
@ -98,7 +98,7 @@
|
||||
{{ availabillity.comment.as_deref().unwrap_or("") }}
|
||||
</td>
|
||||
<td>
|
||||
{% if availabillity.user_id == current_user_id %}
|
||||
{% if availabillity.user_id == user.id %}
|
||||
<div class="buttons is-right">
|
||||
<a class="button is-link" href="/availabillity/edit/{{ availabillity.id }}">Bearbeiten</a>
|
||||
<button class="button is-danger" name="delete-availabillity">Löschen</button>
|
||||
|
@ -20,7 +20,7 @@
|
||||
Kalender
|
||||
</a>
|
||||
|
||||
{% match user_role %}
|
||||
{% match user.role %}
|
||||
{% when AreaManager %}
|
||||
<a class="navbar-item">
|
||||
Planung
|
||||
|
Loading…
x
Reference in New Issue
Block a user