Spaces:
Sleeping
Sleeping
| import { createAccessControl } from "better-auth/plugins/access"; | |
| import { defaultStatements } from "better-auth/plugins/admin/access"; | |
| import { PERMISSION_TYPES } from "app-types/permissions"; | |
| // Combine Better Auth's default statements with our app-specific permissions | |
| const permissions = { | |
| // Use Better Auth's default statements for user and session management | |
| ...defaultStatements, | |
| // Add our app-specific resources | |
| workflow: [...Object.values(PERMISSION_TYPES)], | |
| agent: [...Object.values(PERMISSION_TYPES)], | |
| mcp: [...Object.values(PERMISSION_TYPES)], | |
| chat: [...Object.values(PERMISSION_TYPES)], | |
| temporaryChat: [...Object.values(PERMISSION_TYPES)], | |
| }; | |
| // Create access control with all permissions | |
| export const ac = createAccessControl(permissions); | |
| // User role: restricted permissions | |
| export const user = ac.newRole({ | |
| // No user/session management permissions for regular users | |
| user: [], | |
| session: [], | |
| // Restricted app permissions | |
| workflow: ["view", "use", "list"], | |
| agent: ["view", "use", "list"], | |
| mcp: ["view", "use", "list"], | |
| chat: [...Object.values(PERMISSION_TYPES)], | |
| temporaryChat: [...Object.values(PERMISSION_TYPES)], | |
| }); | |
| // Editor role: app permissions but no user management | |
| export const editor = ac.newRole({ | |
| // No user/session management permissions for editors | |
| user: [], | |
| session: [], | |
| // Full app permissions | |
| workflow: [...Object.values(PERMISSION_TYPES)], | |
| agent: [...Object.values(PERMISSION_TYPES)], | |
| mcp: ["create", "view", "update", "delete", "use", "list"], | |
| chat: [...Object.values(PERMISSION_TYPES)], | |
| temporaryChat: [...Object.values(PERMISSION_TYPES)], | |
| }); | |
| // Admin role: full permissions including user management | |
| export const admin = ac.newRole({ | |
| // Full user and session management permissions from Better Auth defaults | |
| user: [...defaultStatements.user], | |
| session: [...defaultStatements.session], | |
| // Full app permissions | |
| workflow: [...Object.values(PERMISSION_TYPES)], | |
| agent: [...Object.values(PERMISSION_TYPES)], | |
| mcp: [...Object.values(PERMISSION_TYPES)], | |
| chat: [...Object.values(PERMISSION_TYPES)], | |
| temporaryChat: [...Object.values(PERMISSION_TYPES)], | |
| }); | |