30 lines
799 B
TypeScript
30 lines
799 B
TypeScript
export type NormalizedAgentPermissions = Record<string, unknown> & {
|
|
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>;
|
|
const preserved = { ...record };
|
|
return {
|
|
...preserved,
|
|
canCreateAgents:
|
|
typeof record.canCreateAgents === "boolean"
|
|
? record.canCreateAgents
|
|
: defaults.canCreateAgents,
|
|
};
|
|
}
|