first draft of single user-edit page
All checks were successful
CI/CD Pipeline / test (push) Successful in 14m43s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
2025-04-29 22:37:04 +02:00
parent b0168b798c
commit 34850321b7
12 changed files with 414 additions and 166 deletions

View File

@ -1036,7 +1036,8 @@ pub struct UserWithRolesAndMembershipPdf {
#[serde(flatten)]
pub user: User,
pub membership_pdf: bool,
pub roles: Vec<String>,
pub roles: Vec<String>, // TODO: remove
pub proper_roles: Vec<Role>,
}
impl UserWithRolesAndMembershipPdf {
@ -1045,6 +1046,7 @@ impl UserWithRolesAndMembershipPdf {
Self {
roles: user.roles(db).await,
proper_roles: user.real_roles(db).await,
user,
membership_pdf,
}

View File

@ -112,6 +112,43 @@ async fn index_admin(
Template::render("admin/user/index", context.into_json())
}
#[get("/user/<user>")]
async fn view(
db: &State<SqlitePool>,
admin: VorstandUser,
flash: Option<FlashMessage<'_>>,
user: i32,
) -> Result<Template, Flash<Redirect>> {
let Some(user) = User::find_by_id(db, user).await else {
return Err(Flash::error(
Redirect::to("/admin/usert"),
format!("User mit ID {} gibts ned", user),
));
};
let user = UserWithRolesAndMembershipPdf::from_user(db, user).await;
let admin: User = admin.into_inner();
let allowed_to_edit = ManageUserUser::new(db, &admin).await.is_some();
let roles = Role::all(db).await;
let families = Family::all_with_members(db).await;
let mut context = Context::new();
if let Some(msg) = flash {
context.insert("flash", &msg.into_inner());
}
context.insert("allowed_to_edit", &allowed_to_edit);
context.insert("user", &user);
context.insert("roles", &roles);
context.insert("families", &families);
context.insert(
"loggedin_user",
&UserWithDetails::from_user(admin, db).await,
);
Ok(Template::render("admin/user/view", context.into_json()))
}
#[get("/user/fees")]
async fn fees(
db: &State<SqlitePool>,
@ -469,6 +506,7 @@ pub fn routes() -> Vec<Route> {
routes![
index,
index_admin,
view,
resetpw,
update,
create,