Files
suaveplan/packages/identity/auth/permissions/src/presets/role-presets/role-presets.ts
2026-05-27 23:47:53 +01:00

81 lines
2.5 KiB
TypeScript

import type { Permission, Role } from "../../types/permissions.types.js";
/** Default CRUD permissions for common resources. */
export const CRUD_PERMISSIONS: Record<string, Permission[]> = {
posts: [
{ id: "posts:create", resource: "posts", action: "create" },
{ id: "posts:read", resource: "posts", action: "read" },
{ id: "posts:update", resource: "posts", action: "update" },
{ id: "posts:delete", resource: "posts", action: "delete" },
{ id: "posts:list", resource: "posts", action: "list" },
],
users: [
{ id: "users:create", resource: "users", action: "create" },
{ id: "users:read", resource: "users", action: "read" },
{ id: "users:update", resource: "users", action: "update" },
{ id: "users:delete", resource: "users", action: "delete" },
{ id: "users:list", resource: "users", action: "list" },
],
};
/**
* Create a pre-built admin role with full wildcard permissions.
*/
export function createAdminRole(permissions?: Permission[]): Role {
return {
id: "admin",
name: "Admin",
isSystem: true,
permissions: permissions ?? [
{ id: "admin:*", resource: "*", action: "*" },
],
};
}
/**
* Create a pre-built viewer role with read-only permissions.
*/
export function createViewerRole(permissions?: Permission[]): Role {
return {
id: "viewer",
name: "Viewer",
isSystem: true,
permissions: permissions ?? [
{ id: "viewer:read", resource: "*", action: "read" },
{ id: "viewer:list", resource: "*", action: "list" },
],
};
}
/**
* Create a pre-built editor role with create, read, update, and list
* permissions.
*/
export function createEditorRole(permissions?: Permission[]): Role {
return {
id: "editor",
name: "Editor",
isSystem: true,
permissions: permissions ?? [
{ id: "editor:read", resource: "*", action: "read" },
{ id: "editor:list", resource: "*", action: "list" },
{ id: "editor:create", resource: "*", action: "create" },
{ id: "editor:update", resource: "*", action: "update" },
],
};
}
/**
* Create a pre-built owner role with full permissions including delete.
*/
export function createOwnerRole(permissions?: Permission[]): Role {
return {
id: "owner",
name: "Owner",
isSystem: true,
permissions: permissions ?? [
{ id: "owner:*", resource: "*", action: "*" },
],
};
}