import type { Permission, Role } from "../../types/permissions.types.js"; /** Default CRUD permissions for common resources. */ export const CRUD_PERMISSIONS: Record = { 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: "*" }, ], }; }