admin based on title

This commit is contained in:
2022-09-26 01:44:42 +08:00
parent 503a8a3b9b
commit cbf24d6eec
4 changed files with 46 additions and 8 deletions

View File

@@ -105,12 +105,17 @@ impl<'r> FromRequest<'r> for CurrentUser {
let db = try_outcome!(request.guard::<Db>().await);
if let Some(u) = User::get_by_token(&db, &rconn, token).await {
let namehash = rh.hash_with_salt(&u.name);
let user_base = CurrentUser::from_hash(&rconn, namehash).await;
Some(CurrentUser {
id: Some(u.id),
is_admin: u.is_admin
|| is_elected_admin(&rconn, &namehash).await.unwrap(),
is_candidate: is_elected_candidate(&rconn, &namehash).await.unwrap(),
..CurrentUser::from_hash(&rconn, namehash).await
|| is_elected_admin(&rconn, &user_base.custom_title)
.await
.unwrap(),
is_candidate: is_elected_candidate(&rconn, &user_base.custom_title)
.await
.unwrap(),
..user_base
})
} else {
None