allow vorstand to edit boats
This commit is contained in:
		| @@ -1172,7 +1172,6 @@ special_user!(VorstandUser, +"Vorstand"); | |||||||
| special_user!(EventUser, +"manage_events"); | special_user!(EventUser, +"manage_events"); | ||||||
| special_user!(AllowedToEditPaymentStatusUser, +"kassier", +"admin"); | special_user!(AllowedToEditPaymentStatusUser, +"kassier", +"admin"); | ||||||
| special_user!(ManageUserUser, +"admin", +"schriftfuehrer"); | special_user!(ManageUserUser, +"admin", +"schriftfuehrer"); | ||||||
| special_user!(AdminAndSchriftfuehrerUser, +"admin", +"schriftfuehrer"); |  | ||||||
| special_user!(AllowedToUpdateTripToAlwaysBeShownUser, +"admin"); | special_user!(AllowedToUpdateTripToAlwaysBeShownUser, +"admin"); | ||||||
|  |  | ||||||
| #[derive(FromRow, Serialize, Deserialize, Clone, Debug)] | #[derive(FromRow, Serialize, Deserialize, Clone, Debug)] | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ use crate::model::{ | |||||||
|     boat::{Boat, BoatToAdd, BoatToUpdate}, |     boat::{Boat, BoatToAdd, BoatToUpdate}, | ||||||
|     location::Location, |     location::Location, | ||||||
|     log::Log, |     log::Log, | ||||||
|     user::{AdminAndSchriftfuehrerUser, AdminUser, User, UserWithDetails}, |     user::{User, UserWithDetails, VorstandUser}, | ||||||
| }; | }; | ||||||
| use rocket::{ | use rocket::{ | ||||||
|     form::Form, |     form::Form, | ||||||
| @@ -17,7 +17,7 @@ use sqlx::SqlitePool; | |||||||
| #[get("/boat")] | #[get("/boat")] | ||||||
| async fn index( | async fn index( | ||||||
|     db: &State<SqlitePool>, |     db: &State<SqlitePool>, | ||||||
|     admin: AdminAndSchriftfuehrerUser, |     admin: VorstandUser, | ||||||
|     flash: Option<FlashMessage<'_>>, |     flash: Option<FlashMessage<'_>>, | ||||||
| ) -> Template { | ) -> Template { | ||||||
|     let boats = Boat::all(db).await; |     let boats = Boat::all(db).await; | ||||||
| @@ -40,11 +40,7 @@ async fn index( | |||||||
| } | } | ||||||
|  |  | ||||||
| #[get("/boat/<boat>/delete")] | #[get("/boat/<boat>/delete")] | ||||||
| async fn delete( | async fn delete(db: &State<SqlitePool>, admin: VorstandUser, boat: i32) -> Flash<Redirect> { | ||||||
|     db: &State<SqlitePool>, |  | ||||||
|     admin: AdminAndSchriftfuehrerUser, |  | ||||||
|     boat: i32, |  | ||||||
| ) -> Flash<Redirect> { |  | ||||||
|     let boat = Boat::find_by_id(db, boat).await; |     let boat = Boat::find_by_id(db, boat).await; | ||||||
|     Log::create(db, format!("{} deleted boat: {boat:?}", admin.user.name)).await; |     Log::create(db, format!("{} deleted boat: {boat:?}", admin.user.name)).await; | ||||||
|  |  | ||||||
| @@ -65,7 +61,7 @@ async fn update( | |||||||
|     db: &State<SqlitePool>, |     db: &State<SqlitePool>, | ||||||
|     data: Form<BoatToUpdate<'_>>, |     data: Form<BoatToUpdate<'_>>, | ||||||
|     boat_id: i32, |     boat_id: i32, | ||||||
|     _admin: AdminAndSchriftfuehrerUser, |     _admin: VorstandUser, | ||||||
| ) -> Flash<Redirect> { | ) -> Flash<Redirect> { | ||||||
|     let boat = Boat::find_by_id(db, boat_id).await; |     let boat = Boat::find_by_id(db, boat_id).await; | ||||||
|     let Some(boat) = boat else { |     let Some(boat) = boat else { | ||||||
| @@ -82,7 +78,7 @@ async fn update( | |||||||
| async fn create( | async fn create( | ||||||
|     db: &State<SqlitePool>, |     db: &State<SqlitePool>, | ||||||
|     data: Form<BoatToAdd<'_>>, |     data: Form<BoatToAdd<'_>>, | ||||||
|     _admin: AdminAndSchriftfuehrerUser, |     _admin: VorstandUser, | ||||||
| ) -> Flash<Redirect> { | ) -> Flash<Redirect> { | ||||||
|     match Boat::create(db, data.into_inner()).await { |     match Boat::create(db, data.into_inner()).await { | ||||||
|         Ok(_) => Flash::success(Redirect::to("/admin/boat"), "Boot hinzugefügt"), |         Ok(_) => Flash::success(Redirect::to("/admin/boat"), "Boot hinzugefügt"), | ||||||
|   | |||||||
| @@ -128,7 +128,7 @@ function setChoiceByLabel(choicesInstance, label) { | |||||||
|                             <a href="/admin/user" |                             <a href="/admin/user" | ||||||
|                                class="block w-100 py-2 hover:text-primary-600 border-t">Userverwaltung</a> |                                class="block w-100 py-2 hover:text-primary-600 border-t">Userverwaltung</a> | ||||||
|                         {% endif %} |                         {% endif %} | ||||||
|                         {% if "admin" in loggedin_user.roles or "schriftfuehrer" in loggedin_user.roles %} |                         {% if "admin" in loggedin_user.roles or "Vorstand" in loggedin_user.roles %} | ||||||
|                             <a href="/admin/boat" |                             <a href="/admin/boat" | ||||||
|                                class="block w-100 py-2 hover:text-primary-600 border-t">Boote</a> |                                class="block w-100 py-2 hover:text-primary-600 border-t">Boote</a> | ||||||
|                         {% endif %} |                         {% endif %} | ||||||
|   | |||||||
| @@ -418,14 +418,6 @@ | |||||||
|                             <a href="/board/achievement" |                             <a href="/board/achievement" | ||||||
|                                class="block w-100 py-2 hover:text-primary-600">Abzeichen</a> |                                class="block w-100 py-2 hover:text-primary-600">Abzeichen</a> | ||||||
|                         </li> |                         </li> | ||||||
|                     </ul> |  | ||||||
|                 </div> |  | ||||||
|             {% endif %} |  | ||||||
|             {% if "schriftfuehrer" in loggedin_user.roles %} |  | ||||||
|                 <div class="bg-white dark:bg-primary-900 text-black dark:text-white rounded-md block shadow mt-5" |  | ||||||
|                      role="alert"> |  | ||||||
|                     <h2 class="h2">Schriftführer</h2> |  | ||||||
|                     <ul class="list-none ms-2 divide-y divide-gray-200 dark:divide-primary-600"> |  | ||||||
|                         <li class="py-1"> |                         <li class="py-1"> | ||||||
|                             <a href="/admin/boat" class="block w-100 py-2 hover:text-primary-600">Boote</a> |                             <a href="/admin/boat" class="block w-100 py-2 hover:text-primary-600">Boote</a> | ||||||
|                         </li> |                         </li> | ||||||
| @@ -437,9 +429,6 @@ | |||||||
|                      role="alert"> |                      role="alert"> | ||||||
|                     <h2 class="h2">Admin</h2> |                     <h2 class="h2">Admin</h2> | ||||||
|                     <ul class="list-none ms-2 divide-y divide-gray-200 dark:divide-primary-600"> |                     <ul class="list-none ms-2 divide-y divide-gray-200 dark:divide-primary-600"> | ||||||
|                         <li class="py-1"> |  | ||||||
|                             <a href="/admin/boat" class="block w-100 py-2 hover:text-primary-600">Boote</a> |  | ||||||
|                         </li> |  | ||||||
|                         <li class="py-1"> |                         <li class="py-1"> | ||||||
|                             <a href="/admin/user" class="block w-100 py-2 hover:text-primary-600">User</a> |                             <a href="/admin/user" class="block w-100 py-2 hover:text-primary-600">User</a> | ||||||
|                         </li> |                         </li> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user