From 567ec9ec8a855aa3ec4cf94c0e47ad52c59332bc Mon Sep 17 00:00:00 2001 From: Mars <3361409208a@gmail.com> Date: Mon, 15 Jun 2026 17:52:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AE=A1=E7=90=86=E7=AB=AF=20RBAC=20?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BD=93=E7=B3=BB=E4=B8=8E=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增多角色权限控制(赛事/财务/客服管理员),支持员工 CRUD、路由菜单按权限显隐、审计日志范围过滤;登录返回角色与权限列表。玩家端赛事列表增加静默刷新避免图片闪烁。Seed 补充演示员工账号与充值相关权限。附带 RBAC/审计范围单元测试及 UAT 文档更新。 Co-authored-by: Cursor --- .../src/components/AdminPlayerRowActions.vue | 34 +- apps/admin/src/components/DashboardSubNav.vue | 24 +- apps/admin/src/composables/usePermissions.ts | 43 +++ apps/admin/src/constants/permissions.ts | 24 ++ apps/admin/src/i18n/admin-messages.ts | 45 +++ apps/admin/src/i18n/admin-pages-ms.ts | 16 +- apps/admin/src/i18n/admin-pages.ts | 32 +- apps/admin/src/layouts/ManageLayout.vue | 59 +++- apps/admin/src/router/index.ts | 73 ++++- apps/admin/src/stores/auth.ts | 2 + apps/admin/src/utils/admin-access.ts | 80 +++++ apps/admin/src/utils/session-hydrate.ts | 1 + apps/admin/src/views/AgentManager.vue | 117 ++++++- apps/admin/src/views/Audit.vue | 62 +++- apps/admin/src/views/Cashback.vue | 10 +- apps/admin/src/views/Contents.vue | 8 +- apps/admin/src/views/HomeEntry.vue | 60 +++- apps/admin/src/views/Login.vue | 33 +- apps/admin/src/views/Settlement.vue | 8 +- apps/admin/src/views/StaffManage.vue | 294 ++++++++++++++++++ .../src/views/dashboard/DashboardMatches.vue | 35 ++- .../applications/admin/admin-permissions.ts | 1 + .../src/applications/admin/admin-rbac.spec.ts | 100 ++++++ .../applications/admin/admin.controller.ts | 120 ++++++- .../domains/identity/admin-staff.service.ts | 194 ++++++++++++ .../src/domains/identity/auth.controller.ts | 2 + apps/api/src/domains/identity/auth.service.ts | 23 +- apps/api/src/domains/identity/users.module.ts | 5 +- .../operations/audit/audit-list-scope.spec.ts | 20 ++ .../operations/audit/audit-list-scope.ts | 45 +++ .../domains/operations/audit/audit.service.ts | 53 +++- .../src/infrastructure/database/run-seed.ts | 71 ++++- .../src/components/outright/OutrightPanel.vue | 14 +- apps/player/src/composables/usePlayerHome.ts | 33 +- .../src/composables/usePlayerMatches.ts | 37 ++- apps/player/src/layouts/MainLayout.vue | 2 +- apps/player/src/views/FootballView.vue | 29 +- apps/player/src/views/HomeView.vue | 3 + apps/player/src/views/MyBetsView.vue | 4 +- apps/player/src/views/WalletView.vue | 3 +- docs/UAT_CHECKLIST.md | 10 + docs/默认数据说明.md | 3 + packages/shared/src/api-errors.js | 5 + packages/shared/src/api-errors.ts | 5 + 44 files changed, 1717 insertions(+), 125 deletions(-) create mode 100644 apps/admin/src/composables/usePermissions.ts create mode 100644 apps/admin/src/constants/permissions.ts create mode 100644 apps/admin/src/utils/admin-access.ts create mode 100644 apps/admin/src/views/StaffManage.vue create mode 100644 apps/api/src/applications/admin/admin-rbac.spec.ts create mode 100644 apps/api/src/domains/identity/admin-staff.service.ts create mode 100644 apps/api/src/domains/operations/audit/audit-list-scope.spec.ts create mode 100644 apps/api/src/domains/operations/audit/audit-list-scope.ts diff --git a/apps/admin/src/components/AdminPlayerRowActions.vue b/apps/admin/src/components/AdminPlayerRowActions.vue index c571be9..6862eb1 100644 --- a/apps/admin/src/components/AdminPlayerRowActions.vue +++ b/apps/admin/src/components/AdminPlayerRowActions.vue @@ -13,10 +13,20 @@ withDefaults( row: PlayerActionRow; showDetail?: boolean; showLedger?: boolean; + showEdit?: boolean; + showDeposit?: boolean; + showWithdraw?: boolean; + showFreeze?: boolean; + showDelete?: boolean; }>(), { showDetail: true, showLedger: true, + showEdit: true, + showDeposit: true, + showWithdraw: true, + showFreeze: true, + showDelete: true, }, ); @@ -42,13 +52,13 @@ const { t } = useAdminLocale(); {{ t('user.action.ledger_short') }} - {{ t('common.edit') }} - {{ t('common.topup') }} - + {{ t('common.edit') }} + {{ t('common.topup') }} + {{ t('agent_portal.withdraw_btn_label') }} {{ t('common.freeze') }} - + {{ t('common.unfreeze') }} - + {{ t('common.delete') }} diff --git a/apps/admin/src/components/DashboardSubNav.vue b/apps/admin/src/components/DashboardSubNav.vue index 25c0fdf..f359cfd 100644 --- a/apps/admin/src/components/DashboardSubNav.vue +++ b/apps/admin/src/components/DashboardSubNav.vue @@ -1,9 +1,13 @@