Files
EpicNext-Cms/src/features/housekeeping/foundation/authorization.ts
T

20 lines
640 B
TypeScript

import { satisfiesCapability } from "./capability-context";
import type {
CapabilityRequirement,
HousekeepingCapabilityContext,
HousekeepingResult,
} from "./contracts";
import { fail, ok } from "./contracts";
import { createCorrelationId } from "./correlation";
export function authorizeHousekeeping(
context: HousekeepingCapabilityContext,
requirement: CapabilityRequirement,
): HousekeepingResult<HousekeepingCapabilityContext> {
const correlationId = createCorrelationId();
return satisfiesCapability(context, requirement)
? ok(context, correlationId)
: fail("FORBIDDEN", "errors.housekeeping.forbidden", correlationId);
}