Spaces:
Sleeping
Sleeping
File size: 2,160 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 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)],
});
|