feat: 重构管理员权限管理,移除 AdminPermission 模型,整合权限与角色管理逻辑,优化 API 接口以支持角色与权限的同步,增强数据库填充器以对齐权限配置
This commit is contained in:
165
config/admin_permissions.php
Normal file
165
config/admin_permissions.php
Normal file
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 与 database/migrations 中 rebuild admin authorization 的 `$legacyToNewPermissionMap` 一致。
|
||||
* 用于:API 登录返回的 `prd.*`、路由中间件、以及 `admin_menu_actions.permission_code` 之间的桥接。
|
||||
*
|
||||
* @var array<string, list<string>>
|
||||
*/
|
||||
$legacyMap = [
|
||||
'prd.users.manage' => ['service.players.manage'],
|
||||
'prd.users.view_finance' => ['service.players.view', 'service.wallet.view'],
|
||||
'prd.users.view_cs' => ['service.players.view', 'service.tickets.view', 'service.wallet.view'],
|
||||
'prd.play_switch.manage' => ['config.play.manage'],
|
||||
'prd.odds.manage' => ['config.odds.manage'],
|
||||
'prd.risk_cap.manage' => ['config.risk_cap.manage'],
|
||||
'prd.risk_cap.view' => ['config.risk_cap.view'],
|
||||
'prd.rebate.manage' => ['config.odds.manage'],
|
||||
'prd.rebate.view' => ['config.odds.manage'],
|
||||
'prd.jackpot.manage' => ['config.jackpot.manage'],
|
||||
'prd.jackpot.view' => ['config.jackpot.view'],
|
||||
'prd.draw_result.manage' => ['draw.results.view', 'draw.review.review', 'draw.review.publish', 'risk.monitor.view'],
|
||||
'prd.draw_result.view' => ['draw.results.view', 'risk.monitor.view'],
|
||||
'prd.payout.manage' => ['settlement.batch.manage', 'settlement.batch.view'],
|
||||
'prd.payout.review' => ['settlement.batch.review', 'settlement.batch.view'],
|
||||
'prd.payout.view' => ['settlement.batch.view'],
|
||||
'prd.wallet_reconcile.manage' => ['service.wallet.manage', 'service.reconcile.manage'],
|
||||
'prd.wallet_reconcile.view' => ['service.wallet.view', 'service.reconcile.view'],
|
||||
'prd.wallet_reconcile.view_cs' => ['service.wallet.view', 'service.reconcile.view'],
|
||||
'prd.report.all' => ['service.reports.view', 'service.reports.export'],
|
||||
'prd.report.risk' => ['service.reports.view'],
|
||||
'prd.report.finance' => ['service.reports.view', 'service.reports.export'],
|
||||
'prd.report.player' => ['service.reports.view'],
|
||||
'prd.audit.all' => ['service.audit.view'],
|
||||
'prd.audit.self' => ['service.audit.view'],
|
||||
'prd.audit.finance' => ['service.audit.view'],
|
||||
'prd.admin_user.manage' => ['system.admin_user.manage'],
|
||||
'prd.player_freeze.manage' => ['service.players.manage'],
|
||||
'prd.wallet_adjust.manage' => ['service.wallet.manage'],
|
||||
'prd.draw_reopen.manage' => ['draw.review.publish'],
|
||||
];
|
||||
|
||||
$catalog = [
|
||||
['slug' => 'prd.users.manage', 'name' => '用户管理·可管理'],
|
||||
['slug' => 'prd.users.view_finance', 'name' => '用户管理·财务查看'],
|
||||
['slug' => 'prd.users.view_cs', 'name' => '用户管理·客服单用户'],
|
||||
['slug' => 'prd.play_switch.manage', 'name' => '玩法开关·可管理'],
|
||||
['slug' => 'prd.odds.manage', 'name' => '赔率配置·可管理'],
|
||||
['slug' => 'prd.risk_cap.manage', 'name' => '封顶配置·可管理'],
|
||||
['slug' => 'prd.risk_cap.view', 'name' => '封顶配置·查看'],
|
||||
['slug' => 'prd.rebate.manage', 'name' => '佣金/回水·可管理'],
|
||||
['slug' => 'prd.rebate.view', 'name' => '佣金/回水·查看'],
|
||||
['slug' => 'prd.jackpot.manage', 'name' => 'Jackpot 配置·可管理'],
|
||||
['slug' => 'prd.jackpot.view', 'name' => 'Jackpot 配置·查看'],
|
||||
['slug' => 'prd.draw_result.manage', 'name' => '开奖结果录入·可管理'],
|
||||
['slug' => 'prd.draw_result.view', 'name' => '开奖结果·查看'],
|
||||
['slug' => 'prd.draw_reopen.manage', 'name' => '开奖结果重开·可管理'],
|
||||
['slug' => 'prd.payout.manage', 'name' => '派彩确认·可管理'],
|
||||
['slug' => 'prd.payout.review', 'name' => '派彩确认·可审核'],
|
||||
['slug' => 'prd.payout.view', 'name' => '派彩确认·查看'],
|
||||
['slug' => 'prd.wallet_reconcile.manage', 'name' => '钱包对账·可管理'],
|
||||
['slug' => 'prd.wallet_reconcile.view', 'name' => '钱包对账·查看'],
|
||||
['slug' => 'prd.wallet_reconcile.view_cs', 'name' => '钱包对账·客服单用户'],
|
||||
['slug' => 'prd.wallet_adjust.manage', 'name' => '补单/冲正·可管理'],
|
||||
['slug' => 'prd.report.all', 'name' => '报表·全部'],
|
||||
['slug' => 'prd.report.risk', 'name' => '报表·风控'],
|
||||
['slug' => 'prd.report.finance', 'name' => '报表·财务'],
|
||||
['slug' => 'prd.report.player', 'name' => '报表·单用户'],
|
||||
['slug' => 'prd.audit.all', 'name' => '审计日志·全部'],
|
||||
['slug' => 'prd.audit.self', 'name' => '审计日志·自身相关'],
|
||||
['slug' => 'prd.audit.finance', 'name' => '审计日志·资金相关'],
|
||||
['slug' => 'prd.player_freeze.manage', 'name' => '冻结/解冻玩家·可管理'],
|
||||
['slug' => 'prd.admin_user.manage', 'name' => '后台用户权限管理·可管理'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 后台「直接权限」勾选:一级菜单/业务域 → 下属 prd.*(与侧栏模块大致对应,纯展示分组)。
|
||||
*
|
||||
* @var list<array{key: string, label: string, slugs: list<string>}>
|
||||
*/
|
||||
$catalogMenuGroups = [
|
||||
[
|
||||
'key' => 'users_players',
|
||||
'label' => '用户与玩家',
|
||||
'slugs' => [
|
||||
'prd.users.manage',
|
||||
'prd.users.view_finance',
|
||||
'prd.users.view_cs',
|
||||
'prd.player_freeze.manage',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'ops_config',
|
||||
'label' => '运营配置',
|
||||
'slugs' => [
|
||||
'prd.play_switch.manage',
|
||||
'prd.odds.manage',
|
||||
'prd.risk_cap.manage',
|
||||
'prd.risk_cap.view',
|
||||
'prd.rebate.manage',
|
||||
'prd.rebate.view',
|
||||
'prd.jackpot.manage',
|
||||
'prd.jackpot.view',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'draw_risk',
|
||||
'label' => '开奖与风控',
|
||||
'slugs' => [
|
||||
'prd.draw_result.manage',
|
||||
'prd.draw_result.view',
|
||||
'prd.draw_reopen.manage',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'settlement',
|
||||
'label' => '结算与派彩',
|
||||
'slugs' => [
|
||||
'prd.payout.manage',
|
||||
'prd.payout.review',
|
||||
'prd.payout.view',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'wallet',
|
||||
'label' => '钱包与对账',
|
||||
'slugs' => [
|
||||
'prd.wallet_reconcile.manage',
|
||||
'prd.wallet_reconcile.view',
|
||||
'prd.wallet_reconcile.view_cs',
|
||||
'prd.wallet_adjust.manage',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'reports',
|
||||
'label' => '报表',
|
||||
'slugs' => [
|
||||
'prd.report.all',
|
||||
'prd.report.risk',
|
||||
'prd.report.finance',
|
||||
'prd.report.player',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'audit',
|
||||
'label' => '审计日志',
|
||||
'slugs' => [
|
||||
'prd.audit.all',
|
||||
'prd.audit.self',
|
||||
'prd.audit.finance',
|
||||
],
|
||||
],
|
||||
[
|
||||
'key' => 'system',
|
||||
'label' => '系统管理',
|
||||
'slugs' => [
|
||||
'prd.admin_user.manage',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return [
|
||||
'legacy_map' => $legacyMap,
|
||||
'catalog' => $catalog,
|
||||
'catalog_menu_groups' => $catalogMenuGroups,
|
||||
];
|
||||
Reference in New Issue
Block a user