Files
portabase/src/lib/auth/permissions.ts
T

64 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-05-16 15:54:17 +02:00
import { createAccessControl } from "better-auth/plugins/access";
import { defaultStatements, adminAc } from "better-auth/plugins/admin/access";
2025-07-27 21:26:31 +02:00
import { defaultStatements as orgDefaultStatements, adminAc as orgAdminAc, ownerAc as orgOwnerAc, memberAc as orgMemberAc } from "better-auth/plugins/organization/access";
2025-05-16 15:54:17 +02:00
const statement = {
...defaultStatements,
...orgDefaultStatements,
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete", "backup"],
agent: ["create", "list", "update", "delete"],
} as const;
const ac = createAccessControl(statement);
const superadmin = ac.newRole({
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
...orgAdminAc.statements,
2025-07-26 14:43:59 +02:00
...orgOwnerAc.statements,
...orgMemberAc.statements,
2025-05-16 15:54:17 +02:00
});
const admin = ac.newRole({
project: ["create", "list", "update", "delete"],
database: ["create", "list", "update", "delete"],
agent: ["create", "list", "update", "delete"],
...adminAc.statements,
});
const user = ac.newRole({
project: [],
database: [],
agent: [],
});
const pending = ac.newRole({
project: [],
database: [],
agent: [],
});
//org
const orgMember = ac.newRole({
project: ["list"],
database: ["list"],
agent: ["list"],
});
const orgAdmin = ac.newRole({
project: ["create", "update"],
...orgAdminAc.statements,
});
const orgOwner = ac.newRole({
project: ["create", "update", "delete"],
...orgAdminAc.statements,
2025-07-26 14:43:59 +02:00
...orgOwnerAc.statements,
2025-07-27 21:26:31 +02:00
...orgMemberAc.statements
2025-05-16 15:54:17 +02:00
});
export { ac, admin, superadmin, user, pending, orgAdmin, orgMember, orgOwner };