Monorepo for Tangled forked from tangled.org/core
Something went wrong. Try again.
Go
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394package rbac
import ( "fmt" "slices" "strings")
func (e *Enforcer) getDomainsForUser(did string, keepFunc func(string) bool, stripFunc func(string) string) ([]string, error) { domains, err := e.E.GetDomainsForUser(did) if err != nil { return nil, err }
n := 0 for _, x := range domains { if keepFunc(x) { domains[n] = stripFunc(x) n++ } } domains = domains[:n]
return domains, nil}
func (e *Enforcer) addOwner(domain, owner string) error { _, err := e.E.AddGroupingPolicy(owner, "server:owner", domain) return err}
func (e *Enforcer) removeOwner(domain, owner string) error { _, err := e.E.RemoveGroupingPolicy(owner, "server:owner", domain) return err}
func (e *Enforcer) addMember(domain, member string) error { _, err := e.E.AddGroupingPolicy(member, "server:member", domain) return err}
func (e *Enforcer) removeMember(domain, member string) error { _, err := e.E.RemoveGroupingPolicy(member, "server:member", domain) return err}
func (e *Enforcer) isRole(user, role, domain string) (bool, error) { roles, err := e.E.GetImplicitRolesForUser(user, domain) if err != nil { return false, err } if slices.Contains(roles, role) { return true, nil } return false, nil}
func (e *Enforcer) isInviteAllowed(user, domain string) (bool, error) { return e.E.Enforce(user, domain, domain, "server:invite")}
func checkRepoFormat(repo string) error { // sanity check, repo must be of the form ownerDid/repo if parts := strings.SplitN(repo, "/", 2); !strings.HasPrefix(parts[0], "did:") { return fmt.Errorf("invalid repo: %s", repo) }
return nil}
const spindlePrefix = "spindle:"
func intoSpindle(domain string) string { if !isSpindle(domain) { return spindlePrefix + domain } return domain}
func unSpindle(domain string) string { if !isSpindle(domain) { return domain } return strings.TrimPrefix(domain, spindlePrefix)}
func isSpindle(domain string) bool { return strings.HasPrefix(domain, spindlePrefix)}
func isNotSpindle(domain string) bool { return !isSpindle(domain)}