diff --git a/src/model/user/basic.rs b/src/model/user/basic.rs index 05e1ca4..b593c67 100644 --- a/src/model/user/basic.rs +++ b/src/model/user/basic.rs @@ -414,12 +414,14 @@ impl User { .await .unwrap(); - ActivityBuilder::new(&format!( - "{updated_by} hat die Rolle {role} von {self} entfernt." - )) - .relevant_for_user(self) - .save(db) - .await; + if !role.hide_in_lists && role.cluster.is_none() { + ActivityBuilder::new(&format!( + "{updated_by} hat die Rolle {role} von {self} entfernt." + )) + .relevant_for_user(self) + .save(db) + .await; + } Ok(()) } diff --git a/src/tera/admin/user.rs b/src/tera/admin/user.rs index 69ec070..95ec6fc 100644 --- a/src/tera/admin/user.rs +++ b/src/tera/admin/user.rs @@ -7,11 +7,11 @@ use crate::{ mail::valid_mails, role::Role, user::{ - AdminUser, AllowedToEditPaymentStatusUser, ManageUserUser, User, UserWithDetails, - UserWithMembershipPdf, UserWithRolesAndMembershipPdf, VorstandUser, clubmember::ClubMemberUser, foerdernd::FoerderndUser, member::Member, regular::RegularUser, scheckbuch::ScheckbuchUser, schnupperant::SchnupperantUser, schnupperinterest::SchnupperInterestUser, unterstuetzend::UnterstuetzendUser, + AdminUser, AllowedToEditPaymentStatusUser, ManageUserUser, User, UserWithDetails, + UserWithMembershipPdf, UserWithRolesAndMembershipPdf, VorstandUser, }, }, tera::Config, @@ -19,7 +19,6 @@ use crate::{ use chrono::NaiveDate; use futures::future::join_all; use rocket::{ - FromForm, Request, Route, State, form::Form, fs::TempFile, get, @@ -27,9 +26,9 @@ use rocket::{ post, request::{FlashMessage, FromRequest, Outcome}, response::{Flash, Redirect}, - routes, + routes, FromForm, Request, Route, State, }; -use rocket_dyn_templates::{Template, tera::Context}; +use rocket_dyn_templates::{tera::Context, Template}; use sqlx::SqlitePool; // Custom request guard to extract the Referer header @@ -133,6 +132,12 @@ async fn view( format!("User mit ID {} gibts ned", user), )); }; + if user.name == "Externe Steuerperson" { + return Err(Flash::error( + Redirect::to("/admin/user"), + "Diese besondere Person kannst du dir leider nicht anschauen, mein lieber neugieriger Ruderant!" + )); + } let member = Member::from(db, user.clone()).await; let fee = user.fee(db).await; diff --git a/src/tera/log.rs b/src/tera/log.rs index 390e285..ad8cfa6 100644 --- a/src/tera/log.rs +++ b/src/tera/log.rs @@ -1,7 +1,6 @@ use std::net::IpAddr; use rocket::{ - Request, Route, State, form::Form, get, http::{Cookie, CookieJar}, @@ -10,8 +9,9 @@ use rocket::{ response::{Flash, Redirect}, routes, time::{Duration, OffsetDateTime}, + Request, Route, State, }; -use rocket_dyn_templates::{Template, context}; +use rocket_dyn_templates::{context, Template}; use sqlx::SqlitePool; use tera::Context; @@ -110,10 +110,13 @@ async fn index( #[get("/show", rank = 3)] async fn show(db: &State, user: DonauLinzUser) -> Template { let logs = Logbook::completed(db).await; + let boats = Boat::all(db).await; + let users = User::all(db).await; + let logtypes = LogType::all(db).await; Template::render( "log.completed", - context!(logs, loggedin_user: &UserWithDetails::from_user(user.into_inner(), db).await), + context!(logs, boats, users, logtypes, loggedin_user: &UserWithDetails::from_user(user.into_inner(), db).await), ) } @@ -582,7 +585,7 @@ mod test { use sqlx::SqlitePool; use crate::model::logbook::Logbook; - use crate::tera::{User, log::Boat}; + use crate::tera::{log::Boat, User}; use crate::testdb; #[sqlx::test]