fix(API): 역할 권한 서비스 버그 수정

- 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 <noreply@anthropic.com>
This commit is contained in:
2025-12-30 20:41:33 +09:00
parent 4f45a5dbd8
commit f896f267e7
3 changed files with 21 additions and 7 deletions

View File

@@ -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 테이블 통해)
*/

View File

@@ -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();

View File

@@ -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