42 lines
924 B
Go
42 lines
924 B
Go
package management
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/tech/sendico/pkg/model"
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
|
)
|
|
|
|
type Role interface {
|
|
// Create a new role in an organization (returns the created Role with its ID).
|
|
Create(
|
|
ctx context.Context,
|
|
orgRef bson.ObjectID,
|
|
description *model.Describable,
|
|
) (*model.RoleDescription, error)
|
|
|
|
// Delete a role entirely. This will cascade and remove all associated
|
|
Delete(
|
|
ctx context.Context,
|
|
roleRef bson.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 bson.ObjectID,
|
|
) error
|
|
|
|
// List all roles in an organization or globally if orgRef is bson.NilObjectID.
|
|
List(
|
|
ctx context.Context,
|
|
orgRef bson.ObjectID,
|
|
) ([]model.RoleDescription, error)
|
|
}
|