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