@@ -557,6 +557,53 @@ func (handler UserRestHandlerImpl) FetchRoleGroups(w http.ResponseWriter, r *htt
557557 common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
558558 return
559559 }
560+ // RBAC enforcer applying
561+ token := r .Header .Get ("token" )
562+ isAuthorised := false
563+ //checking superAdmin access
564+ isAuthorised , err = handler .userService .IsSuperAdmin (int (userId ))
565+ if err != nil {
566+ handler .logger .Errorw ("error in checking superAdmin access of user" , "err" , err )
567+ common .WriteJsonResp (w , err , "" , http .StatusInternalServerError )
568+ return
569+ }
570+ if ! isAuthorised {
571+ user , err := handler .userService .GetById (userId )
572+ if err != nil {
573+ handler .logger .Errorw ("error in getting user by id" , "err" , err )
574+ common .WriteJsonResp (w , err , "" , http .StatusInternalServerError )
575+ return
576+ }
577+ var roleFilters []bean.RoleFilter
578+ if len (user .Groups ) > 0 {
579+ groupRoleFilters , err := handler .userService .GetRoleFiltersByGroupNames (user .Groups )
580+ if err != nil {
581+ handler .logger .Errorw ("Error in getting role filters by group names" , "err" , err , "groupNames" , user .Groups )
582+ common .WriteJsonResp (w , err , "" , http .StatusInternalServerError )
583+ return
584+ }
585+ if len (groupRoleFilters ) > 0 {
586+ roleFilters = append (roleFilters , groupRoleFilters ... )
587+ }
588+ }
589+ if user .RoleFilters != nil && len (user .RoleFilters ) > 0 {
590+ roleFilters = append (roleFilters , user .RoleFilters ... )
591+ }
592+ if len (roleFilters ) > 0 {
593+ for _ , filter := range roleFilters {
594+ if len (filter .Team ) > 0 {
595+ if ok := handler .enforcer .Enforce (token , casbin .ResourceUser , casbin .ActionGet , strings .ToLower (filter .Team )); ok {
596+ isAuthorised = true
597+ break
598+ }
599+ }
600+ }
601+ }
602+ }
603+ if ! isAuthorised {
604+ common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
605+ return
606+ }
560607 res , err := handler .roleGroupService .FetchRoleGroups ()
561608 if err != nil {
562609 handler .logger .Errorw ("service err, FetchRoleGroups" , "err" , err )
0 commit comments