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

64 lines
1.7 KiB
TypeScript

import { createAccessControl } from "better-auth/plugins/access";
import { defaultStatements, adminAc } from "better-auth/plugins/admin/access";
import { defaultStatements as orgDefaultStatements, adminAc as orgAdminAc, ownerAc as orgOwnerAc, memberAc as orgMemberAc } from "better-auth/plugins/organization/access";
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,
...orgOwnerAc.statements,
...orgMemberAc.statements,
});
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,
...orgOwnerAc.statements,
...orgMemberAc.statements
});
export { ac, admin, superadmin, user, pending, orgAdmin, orgMember, orgOwner };