@@ -31,7 +31,7 @@ use crate::{
31
31
rbac:: { InvalidUserGroupError , RBACError } ,
32
32
} ,
33
33
parseable:: PARSEABLE ,
34
- rbac:: map:: { read_user_groups, roles, users} ,
34
+ rbac:: map:: { mut_sessions , read_user_groups, roles, users} ,
35
35
} ;
36
36
37
37
#[ derive( Debug , Clone , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
@@ -266,11 +266,19 @@ impl UserGroup {
266
266
267
267
pub fn add_roles ( & mut self , roles : HashSet < String > ) -> Result < ( ) , RBACError > {
268
268
self . roles . extend ( roles) ;
269
+ // also refresh all user sessions
270
+ for username in & self . users {
271
+ mut_sessions ( ) . remove_user ( username) ;
272
+ }
269
273
Ok ( ( ) )
270
274
}
271
275
272
276
pub fn add_users ( & mut self , users : HashSet < String > ) -> Result < ( ) , RBACError > {
273
- self . users . extend ( users) ;
277
+ self . users . extend ( users. clone ( ) ) ;
278
+ // also refresh all user sessions
279
+ for username in & users {
280
+ mut_sessions ( ) . remove_user ( username) ;
281
+ }
274
282
Ok ( ( ) )
275
283
}
276
284
@@ -283,6 +291,10 @@ impl UserGroup {
283
291
}
284
292
self . roles . clone_from ( & new_roles) ;
285
293
294
+ // also refresh all user sessions
295
+ for username in & self . users {
296
+ mut_sessions ( ) . remove_user ( username) ;
297
+ }
286
298
Ok ( ( ) )
287
299
}
288
300
@@ -293,6 +305,10 @@ impl UserGroup {
293
305
if old_users. eq ( & new_users) {
294
306
return Ok ( ( ) ) ;
295
307
}
308
+ // also refresh all user sessions
309
+ for username in & users {
310
+ mut_sessions ( ) . remove_user ( username) ;
311
+ }
296
312
self . users . clone_from ( & new_users) ;
297
313
298
314
Ok ( ( ) )
@@ -305,21 +321,4 @@ impl UserGroup {
305
321
put_metadata ( & metadata) . await ?;
306
322
Ok ( ( ) )
307
323
}
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
- // }
325
324
}
0 commit comments