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:
@@ -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 테이블 통해)
|
||||
*/
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user