Files
sendico/api/pkg/auth/management/permission.go
2026-01-31 00:26:42 +01:00

28 lines
789 B
Go

package management
import (
"context"
"github.com/tech/sendico/pkg/model"
"go.mongodb.org/mongo-driver/v2/bson"
)
type Permission interface {
// Grant a permission to a role with an optional object scope and specified effect.
// Use bson.NilObjectID for 'any' objectRef.
GrantToRole(ctx context.Context, policy *model.RolePolicy) error
// Revoke a permission from a role with an optional object scope and specified effect.
// Use bson.NilObjectID for 'any' objectRef.
RevokeFromRole(ctx context.Context, policy *model.RolePolicy) error
// Retrieve all policies assigned to a specific role, including scope and effects.
GetPolicies(
ctx context.Context,
roleRef bson.ObjectID,
) ([]model.RolePolicy, error)
// Persist any changes made to permissions.
Save() error
}