@@ -328,19 +328,17 @@ func UpdateEnvResolver(ctx context.Context, params model.UpdateEnvInput) (*model
328328 }
329329
330330 previousRoles := strings .Split (currentData [constants .EnvKeyRoles ].(string ), "," )
331+ previousProtectedRoles := strings .Split (currentData [constants .EnvKeyProtectedRoles ].(string ), "," )
331332 updatedRoles := strings .Split (updatedData [constants .EnvKeyRoles ].(string ), "," )
332333 updatedDefaultRoles := strings .Split (updatedData [constants .EnvKeyDefaultRoles ].(string ), "," )
333334 updatedProtectedRoles := strings .Split (updatedData [constants .EnvKeyProtectedRoles ].(string ), "," )
334-
335335 // check the roles change
336- if len (updatedRoles ) > 0 {
337- if len (updatedDefaultRoles ) > 0 {
338- // should be subset of roles
339- for _ , role := range updatedDefaultRoles {
340- if ! utils .StringSliceContains (updatedRoles , role ) {
341- log .Debug ("Default roles should be subset of roles" )
342- return res , fmt .Errorf ("default role %s is not in roles" , role )
343- }
336+ if len (updatedRoles ) > 0 && len (updatedDefaultRoles ) > 0 {
337+ // should be subset of roles
338+ for _ , role := range updatedDefaultRoles {
339+ if ! utils .StringSliceContains (updatedRoles , role ) {
340+ log .Debug ("Default roles should be subset of roles" )
341+ return res , fmt .Errorf ("default role %s is not in roles" , role )
344342 }
345343 }
346344 }
@@ -359,6 +357,11 @@ func UpdateEnvResolver(ctx context.Context, params model.UpdateEnvInput) (*model
359357 go updateRoles (ctx , deletedRoles )
360358 }
361359
360+ deletedProtectedRoles := utils .FindDeletedValues (previousProtectedRoles , updatedProtectedRoles )
361+ if len (deletedProtectedRoles ) > 0 {
362+ go updateRoles (ctx , deletedProtectedRoles )
363+ }
364+
362365 // Update local store
363366 memorystore .Provider .UpdateEnvStore (updatedData )
364367 jwk , err := crypto .GenerateJWKBasedOnEnv ()
0 commit comments