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

142 lines
2.6 KiB
TypeScript

import { Claim } from "./claims";
export const rules: Record<
string,
{ claims: Claim[]; hiddenFields: Record<string, Array<string>> }
> = {
tester: {
claims: [
"user:read",
"user:write",
"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",
"config:read",
"config:write",
"mail:all",
"view:read",
"view:write",
"view:delete",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
admin: {
claims: [
"user:read",
"user:write",
"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",
"config:read",
"config:write",
"mail:all",
"view:read",
"view:write",
"view:delete",
],
hiddenFields: {
orgs: ["__v"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
builder: {
claims: [
"permit:read",
"file:upload",
"file:download",
"org:read",
"config:read",
],
hiddenFields: {
orgs: ["__v", "isClient", "name"],
permits: ["__v"],
rts: ["__v"],
tasks: ["__v"],
users: ["__v"],
},
},
staff: {
claims: [
"org:read",
"org:write",
"org:delete",
"permit:read",
"permit:write",
"permit:delete",
"file:upload",
"file:download",
"file:delete",
],
hiddenFields: {
orgs: [],
permits: [],
rts: [],
tasks: [],
users: [],
},
},
supervisor: {
claims: [
"user:read",
"org:read",
"org:write",
"org:delete",
"permit:read",
"permit:write",
"permit:delete",
"file:upload",
"file:download",
"file:delete",
],
hiddenFields: {
orgs: [],
permits: [],
rts: [],
tasks: [],
users: [],
},
},
};
export const roles = Object.keys(rules) as [
keyof typeof rules,
...(keyof typeof rules)[]
];