From f896f267e752bcadba61231493e267b47e405781 Mon Sep 17 00:00:00 2001 From: kent Date: Tue, 30 Dec 2025 20:41:33 +0900 Subject: [PATCH] =?UTF-8?q?fix(API):=20=EC=97=AD=ED=95=A0=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RolePermissionService: Menu 모델 네임스페이스 수정 - \App\Models\Menus\Menu → \App\Models\Commons\Menu - RolePermissionService: 존재하지 않는 컬럼 수정 - code, path → url - RoleService: 커스텀 Role 모델 사용 - Spatie\Permission\Models\Role → App\Models\Permissions\Role - Role 모델: users() 관계 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- app/Models/Permissions/Role.php | 14 ++++++++++++++ app/Services/Authz/RolePermissionService.php | 12 ++++++------ app/Services/Authz/RoleService.php | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/Models/Permissions/Role.php b/app/Models/Permissions/Role.php index 98aa544..5828a4b 100644 --- a/app/Models/Permissions/Role.php +++ b/app/Models/Permissions/Role.php @@ -3,6 +3,7 @@ namespace App\Models\Permissions; use App\Models\Commons\IdeHelperRole; +use App\Models\Members\User; use App\Models\Members\UserRole; use App\Models\Tenants\Tenant; use App\Traits\BelongsToTenant; @@ -56,6 +57,19 @@ public function userRoles() return $this->hasMany(UserRole::class); } + /** + * 관계: 사용자 (user_roles 테이블 통해) + */ + public function users() + { + return $this->belongsToMany( + User::class, + 'user_roles', + 'role_id', + 'user_id' + ); + } + /** * 관계: 권한 (role_has_permissions 테이블 통해) */ diff --git a/app/Services/Authz/RolePermissionService.php b/app/Services/Authz/RolePermissionService.php index b76ce3f..86e14d7 100644 --- a/app/Services/Authz/RolePermissionService.php +++ b/app/Services/Authz/RolePermissionService.php @@ -270,11 +270,11 @@ public static function menus() { $tenantId = (int) app('tenant_id'); - $menus = \App\Models\Menus\Menu::where('tenant_id', $tenantId) + $menus = \App\Models\Commons\Menu::where('tenant_id', $tenantId) ->where('is_active', true) ->orderBy('sort_order', 'asc') ->orderBy('id', 'asc') - ->get(['id', 'parent_id', 'name', 'code', 'path', 'icon', 'sort_order', 'is_active']); + ->get(['id', 'parent_id', 'name', 'url', 'icon', 'sort_order', 'is_active']); // 트리 구조를 플랫한 배열로 변환 (depth 정보 포함) $flatMenus = self::flattenMenuTree($menus->toArray(), null, 0); @@ -373,7 +373,7 @@ public static function toggle(int $roleId, array $params = []) /** 하위 메뉴에 권한 전파 */ protected static function propagateToChildren(int $roleId, int $parentMenuId, string $permissionType, bool $value, int $tenantId): void { - $children = \App\Models\Menus\Menu::where('parent_id', $parentMenuId) + $children = \App\Models\Commons\Menu::where('parent_id', $parentMenuId) ->where('tenant_id', $tenantId) ->get(); @@ -423,7 +423,7 @@ public static function allowAll(int $roleId) self::setTeam($tenantId); - $menus = \App\Models\Menus\Menu::where('tenant_id', $tenantId) + $menus = \App\Models\Commons\Menu::where('tenant_id', $tenantId) ->where('is_active', true) ->get(); @@ -468,7 +468,7 @@ public static function denyAll(int $roleId) self::setTeam($tenantId); - $menus = \App\Models\Menus\Menu::where('tenant_id', $tenantId) + $menus = \App\Models\Commons\Menu::where('tenant_id', $tenantId) ->where('is_active', true) ->get(); @@ -510,7 +510,7 @@ public static function reset(int $roleId) self::denyAll($roleId); // 2. view 권한만 허용 - $menus = \App\Models\Menus\Menu::where('tenant_id', $tenantId) + $menus = \App\Models\Commons\Menu::where('tenant_id', $tenantId) ->where('is_active', true) ->get(); diff --git a/app/Services/Authz/RoleService.php b/app/Services/Authz/RoleService.php index 830c4e3..7814329 100644 --- a/app/Services/Authz/RoleService.php +++ b/app/Services/Authz/RoleService.php @@ -5,7 +5,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; -use Spatie\Permission\Models\Role; +use App\Models\Permissions\Role; use Spatie\Permission\PermissionRegistrar; class RoleService