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
|
/// A member of a team
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
pub struct TeamMember {
|
pub struct TeamMember {
|
||||||
|
|||||||
@@ -407,17 +407,8 @@ pub async fn project_edit(
|
|||||||
&**pool,
|
&**pool,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let permissions;
|
|
||||||
|
|
||||||
if user.role.is_admin() {
|
let permissions = Permissions::get_permissions_by_role(&user.role, &team_member);
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(perms) = permissions {
|
if let Some(perms) = permissions {
|
||||||
let mut transaction = pool.begin().await?;
|
let mut transaction = pool.begin().await?;
|
||||||
|
|||||||
@@ -349,17 +349,8 @@ pub async fn version_edit(
|
|||||||
&**pool,
|
&**pool,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let permissions;
|
|
||||||
|
|
||||||
if user.role.is_admin() {
|
let permissions = Permissions::get_permissions_by_role(&user.role, &team_member);
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(perms) = permissions {
|
if let Some(perms) = permissions {
|
||||||
if !perms.contains(Permissions::UPLOAD_VERSION) {
|
if !perms.contains(Permissions::UPLOAD_VERSION) {
|
||||||
|
|||||||
Reference in New Issue
Block a user