From d1fa3e033696de9214b7ab36d6272e5892c7d7ae Mon Sep 17 00:00:00 2001 From: philipp Date: Sat, 16 Mar 2024 19:47:04 +0100 Subject: [PATCH] board members can open and close trips for others --- src/model/logbook.rs | 7 +++++-- templates/includes/forms/log.html.tera | 8 +++++--- templates/log.html.tera | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/model/logbook.rs b/src/model/logbook.rs index a9a70ce..d3c6e92 100644 --- a/src/model/logbook.rs +++ b/src/model/logbook.rs @@ -472,7 +472,7 @@ ORDER BY departure DESC mut log: LogToFinalize, ) -> Result<(), LogbookUpdateError> { //TODO: extract common tests with `create()` - if user.id != self.shipmaster { + if !user.has_role_tx(db, "Vorstand").await && user.id != self.shipmaster { return Err(LogbookUpdateError::NotYourEntry); } @@ -549,7 +549,10 @@ ORDER BY departure DESC pub async fn delete(&self, db: &SqlitePool, user: &User) -> Result<(), LogbookDeleteError> { Log::create(db, format!("{user:?} deleted trip: {self:?}")).await; - if user.has_role(db, "admin").await || user.id == self.shipmaster { + if user.has_role(db, "admin").await + || user.has_role(db, "Vorstand").await + || user.id == self.shipmaster + { sqlx::query!("DELETE FROM logbook WHERE id=?", self.id) .execute(db) .await diff --git a/templates/includes/forms/log.html.tera b/templates/includes/forms/log.html.tera index dda33c0..f8f0145 100644 --- a/templates/includes/forms/log.html.tera +++ b/templates/includes/forms/log.html.tera @@ -137,9 +137,11 @@ {{ rower.name }} {% if rower.id == log.shipmaster or rower.id == log.steering_person %} ( - {%- if rower.id == log.shipmaster %}Schiffsführer{% endif -%} - {% if rower.id == log.shipmaster and rower.id == log.steering_person %} / {% endif %} - {%- if rower.id == log.steering_person %}Steuerperson{% endif -%} + {%- if rower.id == log.shipmaster %}Schiffsführer + {% endif -%} + {% if rower.id == log.shipmaster and rower.id == log.steering_person %}/{% endif %} + {%- if rower.id == log.steering_person %}Steuerperson + {% endif -%} ) {% endif %}

diff --git a/templates/log.html.tera b/templates/log.html.tera index b37f3e5..d6e2144 100644 --- a/templates/log.html.tera +++ b/templates/log.html.tera @@ -19,6 +19,8 @@ {% for log in on_water %} {% if log.shipmaster == loggedin_user.id %} {{ log::show(log=log, state="on_water", allowed_to_close=true, only_ones="cox" not in loggedin_user.roles) }} + {% elif "Vorstand" in loggedin_user.roles %} + {{ log::show(log=log, state="on_water", allowed_to_close=true, only_ones="cox" not in loggedin_user.roles) }} {% else %} {{ log::show(log=log, state="on_water", only_ones=true) }} {% endif %}