File tree Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -170,10 +170,13 @@ pub async fn reply_login(
170170 . or_else ( || user_info. email . clone ( ) )
171171 . or_else ( || user_info. sub . clone ( ) )
172172 . expect ( "OIDC provider did not return a usable identifier (name, email or sub)" ) ;
173- let user_id = user_info
174- . sub
175- . clone ( )
176- . expect ( "OIDC provider did not return a usable identifier (sub)" ) ;
173+ let user_id = match user_info. sub . clone ( ) {
174+ Some ( id) => id,
175+ None => {
176+ tracing:: error!( "OIDC provider did not return a sub" ) ;
177+ return Err ( OIDCError :: Unauthorized ) ;
178+ }
179+ } ;
177180 let user_info: user:: UserInfo = user_info. into ( ) ;
178181 let group: HashSet < String > = claims
179182 . other
@@ -424,6 +427,12 @@ pub async fn update_user_if_changed(
424427 . find ( |x| x. username ( ) == old_username)
425428 {
426429 entry. clone_from ( & user) ;
430+ // migrate user references inside user groups
431+ for group in metadata. user_groups . iter_mut ( ) {
432+ if group. users . remove ( & old_username) {
433+ group. users . insert ( user. username ( ) . to_string ( ) ) ;
434+ }
435+ }
427436 put_metadata ( & metadata) . await ?;
428437 }
429438 Users . delete_user ( & old_username) ;
You can’t perform that action at this time.
0 commit comments