You've already forked AstralRinth
forked from didirus/AstralRinth
Allow moderators to edit version info (#703)
* Allow moderators to edit version info * Clippy fix
This commit is contained in:
committed by
GitHub
parent
35a541f99b
commit
e6818023a3
@@ -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 {
|
||||
|
||||
@@ -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?;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user