Skip to content

Commit

Permalink
fix: getting cluster list min api optimized by enforcing env object i…
Browse files Browse the repository at this point in the history
…n batch (#3317)

* getting cluster list raw api optimized by enforcing env object in batch rather than loop

* token removed from logs

* minor fix
  • Loading branch information
prakash100198 authored Apr 25, 2023
1 parent ca715d8 commit 4467150
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion util/k8s/k8sCapacityRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,8 +413,26 @@ func (handler *K8sCapacityRestHandlerImpl) CheckRbacForCluster(cluster *cluster.
}
return true, nil
}
emailId, err := handler.userService.GetEmailFromToken(token)
if err != nil {
handler.logger.Errorw("error in getting emailId from token", "err", err)
return false, err
}

var envIdentifierList []string
envIdentifierMap := make(map[string]bool)
for _, env := range envs {
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobalEnvironment, casbin.ActionGet, strings.ToLower(env.EnvironmentIdentifier)); ok {
envIdentifier := strings.ToLower(env.EnvironmentIdentifier)
envIdentifierList = append(envIdentifierList, envIdentifier)
envIdentifierMap[envIdentifier] = true
}
if len(envIdentifierList) == 0 {
return false, errors.New("environment identifier list for rbac batch enforcing contains zero environments")
}
// RBAC enforcer applying
rbacResultMap := handler.enforcer.EnforceByEmailInBatch(emailId, casbin.ResourceGlobalEnvironment, casbin.ActionGet, envIdentifierList)
for envIdentifier, _ := range envIdentifierMap {
if rbacResultMap[envIdentifier] {
//if user has view permission to even one environment of this cluster, authorise the request
return true, nil
}
Expand Down

0 comments on commit 4467150

Please sign in to comment.