42 lines
956 B
Go
42 lines
956 B
Go
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)
|
|
}
|