Files
permit-api/src/utils/roles.ts

185 lines
3.6 KiB
TypeScript

import { Claim } from "./claims";
export const rules: Record<
string,
{ claims: Claim[]; hiddenFields: Record<string, Array<string>> }
> = {
superAdmin: {
claims: [
"user:read",
"user:write",
"user:delete",
"org:read",
"org:write",
"org:delete",
"permit:read",
"permit:write",
"permit:delete",
"file:upload",
"file:download",
"file:delete",
"rts:read",
"rts:write",
"rts:delete",
"task:read",
"task:write",
"task:delete",
"notification:read",
"notification:write",
"notification:delete",
"config:read",
"config:write",
"userConfig:read",
"userConfig:write",
"mail:all",
"view:read",
"view:write",
"view:delete",
"note:read",
"note:write",
"note:delete",
"payment:read",
"alert:read",
"alert:write",
"analytics:read",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
admin: {
claims: [
"user:read",
"user:write",
"org:read",
"permit:read",
"permit:write",
"file:upload",
"file:download",
"file:delete",
"rts:read",
"rts:write",
"rts:delete",
"task:read",
"task:write",
"task:delete",
"notification:read",
"notification:write",
"notification:delete",
"config:read",
"config:write",
"userConfig:read",
"userConfig:write",
"mail:all",
"view:read",
"view:write",
"view:delete",
"note:read",
"note:write",
"note:delete",
"payment:read",
"alert:read",
"alert:write",
"analytics:read",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
team: {
claims: [
"user:read",
"org:read",
"permit:read",
"permit:write",
"file:upload",
"file:download",
"rts:read",
"rts:write",
"task:read",
"task:write",
"notification:read",
"notification:delete",
"config:read",
"userConfig:read",
"userConfig:write",
"mail:all",
"view:read",
"view:write",
"view:delete",
"note:read",
"note:write",
"note:delete",
"payment:read",
"alert:read",
"alert:write",
"analytics:read",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
client: {
claims: [
"user:read",
"permit:read",
"permit:write",
"file:upload",
"file:download",
"file:delete",
"org:read",
"rts:read",
"rts:write",
"notification:read",
"notification:write",
"view:read",
"view:write",
"view:delete",
"ctask:read",
"ctask:write",
"ctask:delete",
"note:read",
"note:write",
"payment:read",
"alert:read",
"alert:write",
"userConfig:read",
"userConfig:write",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
bot: {
claims: ["file:download", "note:write", "rts:read", "rts:write"],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
};
export const roles = Object.keys(rules) as [
keyof typeof rules,
...(keyof typeof rules)[]
];