import { Claim } from "./claims"; export const rules: Record< string, { claims: Claim[]; hiddenFields: Record> } > = { 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)[] ];