Allow moderators to edit version info (#703)

* Allow moderators to edit version info

* Clippy fix
This commit is contained in:
Emma Alexia Triphora
2023-09-11 14:21:50 -04:00
committed by GitHub
parent 35a541f99b
commit e6818023a3
3 changed files with 19 additions and 20 deletions

View File

@@ -45,6 +45,23 @@ impl Default for Permissions {
}
}
impl Permissions {
pub fn get_permissions_by_role(
role: &crate::models::users::Role,
team_member: &Option<crate::database::models::TeamMember>,
) -> Option<Self> {
if role.is_admin() {
Some(Permissions::ALL)
} else if let Some(member) = team_member {
Some(member.permissions)
} else if role.is_mod() {
Some(Permissions::EDIT_DETAILS | Permissions::EDIT_BODY | Permissions::UPLOAD_VERSION)
} else {
None
}
}
}
/// A member of a team
#[derive(Serialize, Deserialize, Clone)]
pub struct TeamMember {

View File

@@ -407,17 +407,8 @@ pub async fn project_edit(
&**pool,
)
.await?;
let permissions;
if user.role.is_admin() {
permissions = Some(Permissions::ALL)
} else if let Some(ref member) = team_member {
permissions = Some(member.permissions)
} else if user.role.is_mod() {
permissions = Some(Permissions::EDIT_DETAILS | Permissions::EDIT_BODY)
} else {
permissions = None
}
let permissions = Permissions::get_permissions_by_role(&user.role, &team_member);
if let Some(perms) = permissions {
let mut transaction = pool.begin().await?;

View File

@@ -349,17 +349,8 @@ pub async fn version_edit(
&**pool,
)
.await?;
let permissions;
if user.role.is_admin() {
permissions = Some(Permissions::ALL)
} else if let Some(member) = team_member {
permissions = Some(member.permissions)
} else if user.role.is_mod() {
permissions = Some(Permissions::EDIT_DETAILS | Permissions::EDIT_BODY)
} else {
permissions = None
}
let permissions = Permissions::get_permissions_by_role(&user.role, &team_member);
if let Some(perms) = permissions {
if !perms.contains(Permissions::UPLOAD_VERSION) {