ec-nest/src/common/permissions.ts

81 lines
2.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 权限码单一事实源(细粒度 domain:action)。
* 控制器 @RequirePermissions 与 seed 资源树共用,避免漂移。
*/
export const Permissions = {
tenant: {
list: 'tenant:list',
create: 'tenant:create',
update: 'tenant:update',
delete: 'tenant:delete',
},
user: {
list: 'user:list',
create: 'user:create',
update: 'user:update',
delete: 'user:delete',
resetPwd: 'user:reset-pwd',
assignRole: 'user:assign-role',
kickSessions: 'user:kick-sessions',
lock: 'user:lock',
unlock: 'user:unlock',
},
role: {
list: 'role:list',
create: 'role:create',
update: 'role:update',
delete: 'role:delete',
assignResource: 'role:assign-resource',
assignOrg: 'role:assign-org',
},
resource: {
list: 'resource:list',
create: 'resource:create',
update: 'resource:update',
delete: 'resource:delete',
},
org: {
list: 'org:list',
create: 'org:create',
update: 'org:update',
delete: 'org:delete',
},
dict: {
list: 'dict:list',
create: 'dict:create',
update: 'dict:update',
delete: 'dict:delete',
},
config: {
list: 'config:list',
create: 'config:create',
update: 'config:update',
delete: 'config:delete',
},
session: { list: 'session:list', kick: 'session:kick' },
notice: {
list: 'notice:list',
create: 'notice:create',
update: 'notice:update',
delete: 'notice:delete',
},
audit: { list: 'audit:list' },
loginLog: { list: 'login-log:list' },
// 服务机构端业务(C0 落地 agency/svcOrg/staff,其余为 C1–C4 预留)
agency: { view: 'agency:view', update: 'agency:update' },
svcOrg: { list: 'svc-org:list', config: 'svc-org:config', newNational: 'svc-org:new-national' },
staff: { list: 'staff:list', create: 'staff:create', update: 'staff:update', delete: 'staff:delete', groupAssign: 'staff:group-assign' },
elder: { list: 'elder:list', detail: 'elder:detail', create: 'elder:create', update: 'elder:update', statusChange: 'elder:status-change', import: 'elder:import', svcSave: 'elder:svc-save' },
plan: { create: 'plan:create', change: 'plan:change', detail: 'plan:detail', confirm: 'plan:confirm' },
order: { generate: 'order:generate', assign: 'order:assign', reassign: 'order:reassign', cancel: 'order:cancel', detail: 'order:detail', today: 'order:today' },
record: { checkin: 'record:checkin', checkout: 'record:checkout', itemSave: 'record:item-save', photoUpload: 'record:photo-upload', detail: 'record:detail' },
abnormal: { report: 'abnormal:report', list: 'abnormal:list', handle: 'abnormal:handle' },
qc: { pendingList: 'qc:pending-list', detail: 'qc:detail', pass: 'qc:pass', return: 'qc:return', exceptionLink: 'qc:exception-link' },
export: { export: 'export:export' },
} as const;
/** 全部权限码扁平列表(seed 授权与资源生成用)。 */
export const ALL_PERMISSIONS: string[] = Object.values(Permissions).flatMap((m) =>
Object.values(m),
);