Skip to content

Commit 9b23468

Browse files
committed
bugfix
- user sessions get removed upon modifying group's roles
1 parent 8f7a8ff commit 9b23468

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

src/rbac/user.rs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::{
3131
rbac::{InvalidUserGroupError, RBACError},
3232
},
3333
parseable::PARSEABLE,
34-
rbac::map::{read_user_groups, roles, users},
34+
rbac::map::{mut_sessions, read_user_groups, roles, users},
3535
};
3636

3737
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
@@ -266,6 +266,10 @@ impl UserGroup {
266266

267267
pub fn add_roles(&mut self, roles: HashSet<String>) -> Result<(), RBACError> {
268268
self.roles.extend(roles);
269+
// also refresh all user sessions
270+
for username in &self.users {
271+
mut_sessions().remove_user(username);
272+
}
269273
Ok(())
270274
}
271275

@@ -283,6 +287,10 @@ impl UserGroup {
283287
}
284288
self.roles.clone_from(&new_roles);
285289

290+
// also refresh all user sessions
291+
for username in &self.users {
292+
mut_sessions().remove_user(username);
293+
}
286294
Ok(())
287295
}
288296

@@ -293,6 +301,10 @@ impl UserGroup {
293301
if old_users.eq(&new_users) {
294302
return Ok(());
295303
}
304+
// also refresh all user sessions
305+
for username in &users {
306+
mut_sessions().remove_user(username);
307+
}
296308
self.users.clone_from(&new_users);
297309

298310
Ok(())
@@ -305,21 +317,4 @@ impl UserGroup {
305317
put_metadata(&metadata).await?;
306318
Ok(())
307319
}
308-
309-
// // are these methods even needed??
310-
// pub fn group_name(&self) -> String {
311-
// self.name.clone()
312-
// }
313-
314-
// pub fn group_id(&self) -> Ulid {
315-
// self.id
316-
// }
317-
318-
// pub fn group_roles(&self) -> HashSet<String> {
319-
// self.roles.clone()
320-
// }
321-
322-
// pub fn group_users(&self) -> HashSet<String> {
323-
// self.users.clone()
324-
// }
325320
}

0 commit comments

Comments
 (0)