Initial Commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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: "*" },
|
||||
],
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user