- implemented in a backwards compatible way, introduces migrations and updates an existing lexicon - newly added field is not marked required, so we should still be able to index old repo-create events properly
···165165 return e.E.Enforce(user, domain, repo, "repo:settings")
166166}
167167168168+// given a repo, what permissions does this user have? repo:owner? repo:invite? etc.
169169+func (e *Enforcer) GetPermissionsInRepo(user, domain, repo string) []string {
170170+ var permissions []string
171171+ res := e.E.GetPermissionsForUserInDomain(user, domain)
172172+ for _, p := range res {
173173+ // get only permissions for this resource/repo
174174+ if p[2] == repo {
175175+ permissions = append(permissions, p[3])
176176+ }
177177+ }
178178+179179+ return permissions
180180+}
181181+168182func (e *Enforcer) IsCollaboratorInviteAllowed(user, domain, repo string) (bool, error) {
169183 return e.E.Enforce(user, domain, repo, "repo:invite")
170184}