staging #342
@@ -19,6 +19,7 @@ use tera::Context;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use crate::model::{
 | 
					use crate::model::{
 | 
				
			||||||
    notification::Notification,
 | 
					    notification::Notification,
 | 
				
			||||||
 | 
					    role::Role,
 | 
				
			||||||
    user::{User, UserWithRoles},
 | 
					    user::{User, UserWithRoles},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,6 +54,27 @@ async fn index(db: &State<SqlitePool>, user: User, flash: Option<FlashMessage<'_
 | 
				
			|||||||
    Template::render("index", context.into_json())
 | 
					    Template::render("index", context.into_json())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[get("/steering")]
 | 
				
			||||||
 | 
					async fn steering(db: &State<SqlitePool>, user: User, flash: Option<FlashMessage<'_>>) -> Template {
 | 
				
			||||||
 | 
					    let mut context = Context::new();
 | 
				
			||||||
 | 
					    if let Some(msg) = flash {
 | 
				
			||||||
 | 
					        context.insert("flash", &msg.into_inner());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let bootskundige =
 | 
				
			||||||
 | 
					        User::all_with_role(db, &Role::find_by_name(db, "Bootsführer").await.unwrap()).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let mut coxes = User::all_with_role(db, &Role::find_by_name(db, "cox").await.unwrap()).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    coxes.retain(|user| !bootskundige.contains(&user)); // Remove bootskundige from coxes list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context.insert("coxes", &coxes);
 | 
				
			||||||
 | 
					    context.insert("bootskundige", &bootskundige);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context.insert("loggedin_user", &UserWithRoles::from_user(user, db).await);
 | 
				
			||||||
 | 
					    Template::render("steering", context.into_json())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[post("/", data = "<login>")]
 | 
					#[post("/", data = "<login>")]
 | 
				
			||||||
async fn wikiauth(db: &State<SqlitePool>, login: Form<LoginForm<'_>>) -> String {
 | 
					async fn wikiauth(db: &State<SqlitePool>, login: Form<LoginForm<'_>>) -> String {
 | 
				
			||||||
    match User::login(db, login.name, login.password).await {
 | 
					    match User::login(db, login.name, login.password).await {
 | 
				
			||||||
@@ -86,7 +108,7 @@ pub struct Config {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
pub fn config(rocket: Rocket<Build>) -> Rocket<Build> {
 | 
					pub fn config(rocket: Rocket<Build>) -> Rocket<Build> {
 | 
				
			||||||
    rocket
 | 
					    rocket
 | 
				
			||||||
        .mount("/", routes![index])
 | 
					        .mount("/", routes![index, steering])
 | 
				
			||||||
        .mount("/auth", auth::routes())
 | 
					        .mount("/auth", auth::routes())
 | 
				
			||||||
        .mount("/wikiauth", routes![wikiauth])
 | 
					        .mount("/wikiauth", routes![wikiauth])
 | 
				
			||||||
        .mount("/log", log::routes())
 | 
					        .mount("/log", log::routes())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,6 +81,9 @@
 | 
				
			|||||||
                            <a href="/boatreservation"
 | 
					                            <a href="/boatreservation"
 | 
				
			||||||
                               class="block w-100 py-2 hover:text-primary-600">Bootsreservierung</a>
 | 
					                               class="block w-100 py-2 hover:text-primary-600">Bootsreservierung</a>
 | 
				
			||||||
                        </li>
 | 
					                        </li>
 | 
				
			||||||
 | 
					                        <li class="py-1">
 | 
				
			||||||
 | 
					                            <a href="/steering" class="block w-100 py-2 hover:text-primary-600">Steuerleute & Co</a>
 | 
				
			||||||
 | 
					                        </li>
 | 
				
			||||||
                    </ul>
 | 
					                    </ul>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            {% endif %}
 | 
					            {% endif %}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								templates/steering.html.tera
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								templates/steering.html.tera
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					{% import "includes/macros" as macros %}
 | 
				
			||||||
 | 
					{% extends "base" %}
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					    <div class="max-w-screen-lg w-full">
 | 
				
			||||||
 | 
					        <h1 class="h1">Steuerleute  + Personen mit Steuerberechtigung</h1>
 | 
				
			||||||
 | 
					        <div class="border-r border-l border-gray-200 dark:border-primary-600">
 | 
				
			||||||
 | 
					            <div class="border-t border-gray-200 dark:border-primary-600 bg-white dark:bg-primary-900 text-black dark:text-white flex justify-between items-center px-3 py-1">
 | 
				
			||||||
 | 
					                <ul>
 | 
				
			||||||
 | 
					                    {% for cox in coxes | sort(attribute='name') %}<li>{{ cox.name }}</li>{% endfor %}
 | 
				
			||||||
 | 
					                </ul>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <h1 class="h1">Bootskundige</h1>
 | 
				
			||||||
 | 
					        <div class="border-r border-l border-gray-200 dark:border-primary-600">
 | 
				
			||||||
 | 
					            <div class="border-t border-gray-200 dark:border-primary-600 bg-white dark:bg-primary-900 text-black dark:text-white flex justify-between items-center px-3 py-1">
 | 
				
			||||||
 | 
					                <ul>
 | 
				
			||||||
 | 
					                    {% for cox in bootskundige | sort(attribute='name') %}<li>{{ cox.name }}</li>{% endfor %}
 | 
				
			||||||
 | 
					                </ul>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					{% endblock content %}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user