Skip to content

Commit bfb9a7f

Browse files
authored
Deduplicate privilege entries (#465)
1 parent 6d227ed commit bfb9a7f

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

server/src/handlers/http/rbac.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*
1717
*/
1818

19+
use std::collections::HashSet;
20+
1921
use crate::{
2022
option::CONFIG,
2123
rbac::{
@@ -124,7 +126,8 @@ pub async fn put_role(
124126
) -> Result<String, RBACError> {
125127
let username = username.into_inner();
126128
let role = role.into_inner();
127-
let role: Vec<DefaultPrivilege> = serde_json::from_value(role)?;
129+
let role: HashSet<DefaultPrivilege> = serde_json::from_value(role)?;
130+
let role = role.into_iter().collect();
128131

129132
if !Users.contains(&username) {
130133
return Err(RBACError::UserDoesNotExist);

server/src/rbac/role.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ impl RoleBuilder {
104104
pub mod model {
105105
use super::{Action, RoleBuilder};
106106

107-
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
107+
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, Hash)]
108108
#[serde(tag = "privilege", content = "resource", rename_all = "lowercase")]
109109
pub enum DefaultPrivilege {
110110
Admin,

0 commit comments

Comments
 (0)