@@ -94,6 +94,8 @@ func clearSessionIfRequired(currentData, updatedData map[string]interface{}) {
9494 }
9595}
9696
97+ // updateRoles will update DB for user roles, if a role is deleted by admin
98+ // then this function will those roles from user roles if exists
9799func updateRoles (ctx context.Context , deletedRoles []string ) error {
98100 data , err := db .Provider .ListUsers (ctx , & model.Pagination {
99101 Limit : 1 ,
@@ -111,20 +113,17 @@ func updateRoles(ctx context.Context, deletedRoles []string) error {
111113 }
112114
113115 for i := range allData .Users {
114- now := time .Now ().Unix ()
115- allData .Users [i ].Roles = utils .DeleteFromArray (allData .Users [i ].Roles , deletedRoles )
116- allData .Users [i ].UpdatedAt = & now
117- }
118-
119- for i := range allData .Users {
120- updatedValues := map [string ]interface {}{
121- "roles" : strings .Join (allData .Users [i ].Roles , "," ),
122- "updated_at" : time .Now ().Unix (),
123- }
124- id := []string {allData .Users [i ].ID }
125- err = db .Provider .UpdateUsers (ctx , updatedValues , id )
126- if err != nil {
127- return err
116+ roles := utils .DeleteFromArray (allData .Users [i ].Roles , deletedRoles )
117+ if len (allData .Users [i ].Roles ) != len (roles ) {
118+ updatedValues := map [string ]interface {}{
119+ "roles" : strings .Join (roles , "," ),
120+ "updated_at" : time .Now ().Unix (),
121+ }
122+ id := []string {allData .Users [i ].ID }
123+ err = db .Provider .UpdateUsers (ctx , updatedValues , id )
124+ if err != nil {
125+ return err
126+ }
128127 }
129128 }
130129 return nil
0 commit comments