Skip to content

Commit

Permalink
Merge pull request #1 from Unity-Technologies/diegok/multi-owner
Browse files Browse the repository at this point in the history
WIP: Attempt to respect all namespace admin role bindings
  • Loading branch information
diegok-unity authored Apr 7, 2022
2 parents 80edfad + 781b57b commit a612530
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions components/access-management/kfam/api_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,12 +299,22 @@ func (c *KfamV1Alpha1Client) isClusterAdmin(queryUser string) bool {
return false
}

func (c *KfamV1Alpha1Client) isNamespaceAdmin(queryUser string, namespace string) bool {
bindingEntries, err := c.bindingClient.List(queryUser, []string{namespace}, "admin")
if err != nil {
return false
}
return len(bindingEntries.Bindings) > 0
}

//isOwnerOrAdmin return true if queryUser is cluster admin or profile owner
func (c *KfamV1Alpha1Client) isOwnerOrAdmin(queryUser string, profileName string) bool {
isAdmin := c.isClusterAdmin(queryUser)
userIsClusterAdmin := c.isClusterAdmin(queryUser)
userIsNamespaceAdmin := c.isNamespaceAdmin(queryUser, profileName)
prof, err := c.profileClient.Get(profileName, metav1.GetOptions{})
if err != nil {
return false
}
return isAdmin || (prof.Spec.Owner.Name == queryUser)

return userIsClusterAdmin || userIsNamespaceAdmin || (prof.Spec.Owner.Name == queryUser)
}

0 comments on commit a612530

Please sign in to comment.