fix(mng): 권한 분석에서 역할 기반 사용자가 표시되지 않는 버그 수정

- getUserRoles(): user_roles 테이블에서 model_has_roles(Spatie) 테이블로 변경
- roles 테이블의 display_name → description 컬럼으로 수정
- traceUsersWithPermission()에서도 동일한 컬럼명 수정
This commit is contained in:
2025-11-26 22:01:27 +09:00
parent 1fc530bca2
commit f82fd5ff1b

View File

@@ -321,25 +321,25 @@ private function getUserDepartments(int $userId, ?int $tenantId): array
}
/**
* 사용자의 역할 목록 조회
* 사용자의 역할 목록 조회 (Spatie model_has_roles 테이블 사용)
*/
private function getUserRoles(int $userId, ?int $tenantId): array
{
$query = DB::table('user_roles as ur')
->join('roles as r', 'r.id', '=', 'ur.role_id')
->select('r.id', 'r.name', 'r.display_name')
->where('ur.user_id', $userId)
->whereNull('ur.deleted_at');
$query = DB::table('model_has_roles as mhr')
->join('roles as r', 'r.id', '=', 'mhr.role_id')
->select('r.id', 'r.name', 'r.description')
->where('mhr.model_type', User::class)
->where('mhr.model_id', $userId);
if ($tenantId) {
$query->where('ur.tenant_id', $tenantId);
$query->where('mhr.tenant_id', $tenantId);
}
return $query->get()->map(function ($role) {
return [
'id' => $role->id,
'name' => $role->name,
'display_name' => $role->display_name,
'display_name' => $role->description,
];
})->toArray();
}
@@ -363,7 +363,7 @@ public function traceUsersWithPermission(int $menuId, string $permissionType = '
->join('permissions as p', 'p.id', '=', 'rhp.permission_id')
->join('users as u', 'u.id', '=', 'mhr.model_id')
->join('roles as r', 'r.id', '=', 'mhr.role_id')
->select('u.id as user_id', 'u.name as user_name', 'u.email', 'r.id as role_id', 'r.name as role_name', 'r.display_name as role_display_name')
->select('u.id as user_id', 'u.name as user_name', 'u.email', 'r.id as role_id', 'r.name as role_name', 'r.description as role_display_name')
->where('mhr.model_type', User::class)
->where('p.guard_name', $guardName)
->where('p.name', $permissionName)