first draft of single user-edit page
This commit is contained in:
@ -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,
|
||||
}
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user