From c46ed201e2cc624654927abbee3a3b3fc41d0cf8 Mon Sep 17 00:00:00 2001 From: Satyam Singh Date: Fri, 4 Aug 2023 15:32:10 +0530 Subject: [PATCH] Deduplicate privilege entries --- server/src/handlers/http/rbac.rs | 5 ++++- server/src/rbac/role.rs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/server/src/handlers/http/rbac.rs b/server/src/handlers/http/rbac.rs index c50ff12de..04dd4822f 100644 --- a/server/src/handlers/http/rbac.rs +++ b/server/src/handlers/http/rbac.rs @@ -16,6 +16,8 @@ * */ +use std::collections::HashSet; + use crate::{ option::CONFIG, rbac::{ @@ -124,7 +126,8 @@ pub async fn put_role( ) -> Result { let username = username.into_inner(); let role = role.into_inner(); - let role: Vec = serde_json::from_value(role)?; + let role: HashSet = serde_json::from_value(role)?; + let role = role.into_iter().collect(); if !Users.contains(&username) { return Err(RBACError::UserDoesNotExist); diff --git a/server/src/rbac/role.rs b/server/src/rbac/role.rs index 8a5e79911..7f03e040a 100644 --- a/server/src/rbac/role.rs +++ b/server/src/rbac/role.rs @@ -104,7 +104,7 @@ impl RoleBuilder { pub mod model { use super::{Action, RoleBuilder}; - #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)] + #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, Hash)] #[serde(tag = "privilege", content = "resource", rename_all = "lowercase")] pub enum DefaultPrivilege { Admin,