feat: 重构管理员权限管理,移除 AdminPermission 模型,整合权限与角色管理逻辑,优化 API 接口以支持角色与权限的同步,增强数据库填充器以对齐权限配置
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
<?php
|
||||
|
||||
use App\Lottery\ErrorCode;
|
||||
use App\Models\AdminPermission;
|
||||
use App\Models\AdminRole;
|
||||
use App\Models\AdminUser;
|
||||
use App\Models\AuditLog;
|
||||
use App\Models\ReconcileJob;
|
||||
use App\Models\ReportJob;
|
||||
use App\Services\AuditLogger;
|
||||
use App\Support\AdminPermissionBridge;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
uses(RefreshDatabase::class);
|
||||
@@ -90,8 +91,16 @@ test('reconcile job create with items and nested items index', function (): void
|
||||
|
||||
test('admin without report permission receives 403 on report-jobs', function (): void {
|
||||
$role = AdminRole::query()->create(['slug' => 'auditor_test', 'name' => 'Auditor Test']);
|
||||
$perm = AdminPermission::query()->create(['slug' => 'prd.audit.finance', 'name' => '§8 审计日志·资金相关']);
|
||||
$role->permissions()->sync([(int) $perm->getKey()]);
|
||||
$ids = DB::table('admin_menu_actions')
|
||||
->whereIn('permission_code', AdminPermissionBridge::menuActionCodesForLegacy('prd.audit.finance'))
|
||||
->where('status', 1)
|
||||
->pluck('id');
|
||||
foreach ($ids as $mid) {
|
||||
DB::table('admin_role_menu_actions')->insert([
|
||||
'role_id' => $role->id,
|
||||
'menu_action_id' => (int) $mid,
|
||||
]);
|
||||
}
|
||||
|
||||
$user = AdminUser::query()->create([
|
||||
'username' => 'auditor_only',
|
||||
@@ -100,7 +109,13 @@ test('admin without report permission receives 403 on report-jobs', function ():
|
||||
'password' => Hash::make('pw-audit'),
|
||||
'status' => 0,
|
||||
]);
|
||||
$user->roles()->sync([(int) $role->getKey()]);
|
||||
$siteId = AdminUser::defaultAdminSiteId();
|
||||
$user->roles()->sync([
|
||||
(int) $role->id => [
|
||||
'site_id' => $siteId,
|
||||
'granted_at' => now(),
|
||||
],
|
||||
]);
|
||||
|
||||
$token = $user->createToken('test', ['*'], now()->addDay())->plainTextToken;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user