feat: add housekeeping capability context

This commit is contained in:
Simo committed 2026-08-25 19:16:29 +02:00
1 parent 7d62a04f0e
commit c63c9830b2
4 files changed
+180

No files matched your search

@@ -0,0 +1,30 @@
import type { PermissionSet } from "@/lib/permissions";
import type {
CapabilityRequirement,
HousekeepingActor,
HousekeepingCapabilityContext,
} from "./contracts";
export function createHousekeepingCapabilityContext(
actor: HousekeepingActor,
permissions: PermissionSet,
): HousekeepingCapabilityContext {
return {
actor,
isSuperAdmin: permissions.isSuperAdmin,
has: (slug) => permissions.has(slug),
hasAny: (...slugs) => permissions.hasAny(...slugs),
hasAll: (...slugs) => permissions.hasAll(...slugs),
};
}
export function satisfiesCapability(
context: HousekeepingCapabilityContext,
requirement: CapabilityRequirement,
): boolean {
if (context.isSuperAdmin) return true;
return requirement.mode === "any"
? context.hasAny(...requirement.slugs)
: context.hasAll(...requirement.slugs);
}