- 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
···19type Repo struct {
20 LexiconTypeID string `json:"$type,const=sh.tangled.repo" cborgen:"$type,const=sh.tangled.repo"`
21 AddedAt *string `json:"addedAt,omitempty" cborgen:"addedAt,omitempty"`
022 // knot: knot where the repo was created
23 Knot string `json:"knot" cborgen:"knot"`
24 // name: name of the repo
···19type Repo struct {
20 LexiconTypeID string `json:"$type,const=sh.tangled.repo" cborgen:"$type,const=sh.tangled.repo"`
21 AddedAt *string `json:"addedAt,omitempty" cborgen:"addedAt,omitempty"`
22+ Description *string `json:"description,omitempty" cborgen:"description,omitempty"`
23 // knot: knot where the repo was created
24 Knot string `json:"knot" cborgen:"knot"`
25 // name: name of the repo
···165 return e.E.Enforce(user, domain, repo, "repo:settings")
166}
167168+// given a repo, what permissions does this user have? repo:owner? repo:invite? etc.
169+func (e *Enforcer) GetPermissionsInRepo(user, domain, repo string) []string {
170+ var permissions []string
171+ res := e.E.GetPermissionsForUserInDomain(user, domain)
172+ for _, p := range res {
173+ // get only permissions for this resource/repo
174+ if p[2] == repo {
175+ permissions = append(permissions, p[3])
176+ }
177+ }
178+179+ return permissions
180+}
181+182func (e *Enforcer) IsCollaboratorInviteAllowed(user, domain, repo string) (bool, error) {
183 return e.E.Enforce(user, domain, repo, "repo:invite")
184}