mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-16 19:00:38 +09:00
28 lines
722 B
TypeScript
28 lines
722 B
TypeScript
|
|
export interface NormalizedAgentPermissions {
|
||
|
|
canCreateAgents: boolean;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function defaultPermissionsForRole(role: string): NormalizedAgentPermissions {
|
||
|
|
return {
|
||
|
|
canCreateAgents: role === "ceo",
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
export function normalizeAgentPermissions(
|
||
|
|
permissions: unknown,
|
||
|
|
role: string,
|
||
|
|
): NormalizedAgentPermissions {
|
||
|
|
const defaults = defaultPermissionsForRole(role);
|
||
|
|
if (typeof permissions !== "object" || permissions === null || Array.isArray(permissions)) {
|
||
|
|
return defaults;
|
||
|
|
}
|
||
|
|
|
||
|
|
const record = permissions as Record<string, unknown>;
|
||
|
|
return {
|
||
|
|
canCreateAgents:
|
||
|
|
typeof record.canCreateAgents === "boolean"
|
||
|
|
? record.canCreateAgents
|
||
|
|
: defaults.canCreateAgents,
|
||
|
|
};
|
||
|
|
}
|