feat: 增强代理和玩家管理功能
- 在多个控制器中更新权限检查逻辑,确保管理员能够更灵活地管理代理和玩家。 - 在 AdminPlayerStoreController 中引入对玩家创建能力的验证,确保只有具备相应权限的管理员能够创建玩家。 - 更新请求验证逻辑,新增 credit_limit、rebate_rate 和 extra_rebate_rate 字段,以支持更细粒度的玩家管理。 - 在 AgentNodeProfileController 中添加对父代理能力授予的验证,确保子代理的权限在父代理范围内。 - 引入 AgentProfileFieldRules 以简化代理资料更新请求的规则定义,提升代码复用性。
This commit is contained in:
@@ -2,98 +2,27 @@
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\AdminRole;
|
||||
use App\Models\AdminUser;
|
||||
use Illuminate\Database\Seeder;
|
||||
use App\Support\AdminAgentPermissionMenuActionSync;
|
||||
use App\Support\AdminDrawPermissionMenuActionSync;
|
||||
use App\Support\AdminPermissionBridge;
|
||||
use App\Support\PlatformSystemRoles;
|
||||
|
||||
/**
|
||||
* 后台 RBAC:与 {@see AdminUser::ROLE_SUPER_ADMIN} 及 `config/admin_permissions.php` 对齐。
|
||||
* 后台 RBAC:平台固定角色 super_admin / agent。
|
||||
*
|
||||
* 演示账号 **admin** / **123456**(仅限非 production)。
|
||||
*/
|
||||
final class AdminRbacAndUserSeeder extends Seeder
|
||||
{
|
||||
/** @param list<string> $legacySlugs */
|
||||
private function syncRolePermissions(AdminRole $role, array $legacySlugs): void
|
||||
{
|
||||
$role->syncLegacyPermissionSlugs($legacySlugs);
|
||||
}
|
||||
|
||||
/** @return list<string> */
|
||||
private function allCatalogSlugs(): array
|
||||
{
|
||||
return AdminPermissionBridge::allLegacySlugs();
|
||||
}
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
AdminAgentPermissionMenuActionSync::syncMissing();
|
||||
AdminDrawPermissionMenuActionSync::syncMissing();
|
||||
|
||||
$super = AdminRole::query()->updateOrCreate(
|
||||
['slug' => AdminUser::ROLE_SUPER_ADMIN],
|
||||
['code' => AdminUser::ROLE_SUPER_ADMIN, 'name' => '超级管理员'],
|
||||
);
|
||||
$this->syncRolePermissions($super, $this->allCatalogSlugs());
|
||||
PlatformSystemRoles::ensureAll();
|
||||
|
||||
$risk = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'risk_operator'],
|
||||
['code' => 'risk_operator', 'name' => '风控运营员'],
|
||||
);
|
||||
$this->syncRolePermissions($risk, [
|
||||
'prd.dashboard.view',
|
||||
'prd.play_switch.manage',
|
||||
'prd.odds.manage',
|
||||
'prd.risk_cap.manage',
|
||||
'prd.rebate.manage',
|
||||
'prd.jackpot.manage',
|
||||
'prd.draw_result.manage',
|
||||
'prd.risk.view',
|
||||
'prd.risk.manage',
|
||||
'prd.payout.review',
|
||||
'prd.tickets.view',
|
||||
'prd.wallet_reconcile.view',
|
||||
'prd.audit.view',
|
||||
'prd.player_freeze.manage',
|
||||
'prd.report.view',
|
||||
'prd.report.export',
|
||||
]);
|
||||
|
||||
$finance = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'finance'],
|
||||
['code' => 'finance', 'name' => '财务/对账员'],
|
||||
);
|
||||
$this->syncRolePermissions($finance, [
|
||||
'prd.dashboard.view',
|
||||
'prd.users.view_finance',
|
||||
'prd.risk_cap.view',
|
||||
'prd.rebate.view',
|
||||
'prd.jackpot.view',
|
||||
'prd.draw_result.view',
|
||||
'prd.payout.view',
|
||||
'prd.tickets.view',
|
||||
'prd.wallet_reconcile.manage',
|
||||
'prd.wallet_adjust.manage',
|
||||
'prd.audit.view',
|
||||
'prd.report.view',
|
||||
'prd.report.export',
|
||||
]);
|
||||
|
||||
$cs = AdminRole::query()->updateOrCreate(
|
||||
['slug' => 'customer_service'],
|
||||
['code' => 'customer_service', 'name' => '客服人员'],
|
||||
);
|
||||
$this->syncRolePermissions($cs, [
|
||||
'prd.dashboard.view',
|
||||
'prd.users.view_cs',
|
||||
'prd.tickets.view',
|
||||
'prd.draw_result.view',
|
||||
'prd.wallet_reconcile.view_cs',
|
||||
'prd.report.view',
|
||||
]);
|
||||
$super = PlatformSystemRoles::ensureSuperAdminRole();
|
||||
|
||||
$username = 'admin';
|
||||
AdminUser::query()->updateOrCreate(
|
||||
|
||||
Reference in New Issue
Block a user