81 lines
2.5 KiB
TypeScript
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: "*" },
|
|
],
|
|
};
|
|
}
|