Monorepo for Tangled
tangled.org
1package rbac2
2
3import "github.com/bluesky-social/indigo/atproto/syntax"
4
5func (e *Enforcer) SetSpindleOwner(user syntax.DID, spindle syntax.DID) error {
6 return e.setRoleForUser(user.String(), "server:owner", intoSpindle(spindle))
7}
8
9func (e *Enforcer) IsSpindleMember(user syntax.DID, spindle syntax.DID) (bool, error) {
10 return e.hasImplicitRoleForUser(user.String(), "server:member", intoSpindle(spindle))
11}
12
13func (e *Enforcer) AddSpindleMember(user syntax.DID, spindle syntax.DID) error {
14 _, err := e.e.AddRoleForUser(user.String(), "server:member", intoSpindle(spindle))
15 return err
16}
17
18func (e *Enforcer) RemoveSpindleMember(user syntax.DID, spindle syntax.DID) error {
19 _, err := e.e.DeleteRoleForUser(user.String(), "server:member", intoSpindle(spindle))
20 return err
21}
22
23func (e *Enforcer) IsSpindleMemberInviteAllowed(user syntax.DID, spindle syntax.DID) (bool, error) {
24 return e.e.Enforce(user.String(), intoSpindle(spindle), "/member", "write")
25}
26
27func intoSpindle(did syntax.DID) string {
28 return "/spindle/" + did.String()
29}