package management import ( "context" "github.com/tech/sendico/pkg/model" "go.mongodb.org/mongo-driver/bson/primitive" ) type Role interface { // Create a new role in an organization (returns the created Role with its ID). Create( ctx context.Context, orgRef primitive.ObjectID, description *model.Describable, ) (*model.RoleDescription, error) // Delete a role entirely. This will cascade and remove all associated Delete( ctx context.Context, roleRef primitive.ObjectID, ) error // Assign a role to a user in a specific organization. Assign( ctx context.Context, role *model.Role, ) error // Revoke a role from a user in a specific organization. Revoke( ctx context.Context, roleRef, accountRef, orgRef primitive.ObjectID, ) error // List all roles in an organization or globally if orgRef is primitive.NilObjectID. List( ctx context.Context, orgRef primitive.ObjectID, ) ([]model.RoleDescription, error) }