Files
sam-manage/app/Http/Controllers/RoleController.php
권혁성 8da1702e47 fix: [tenant-console] 테넌트 콘솔 분리작업
- 라우트 파라미터 충돌 수정 (Layer 4 확장)
- TenantScope 글로벌 스코프가 테넌트 콘솔에서 올바른 tenant_id 사용하도록 수정
- 감사로그 상세 테넌트 콘솔 레이아웃 적용
- 테넌트 전환: 모달 → 컨텍스트 메뉴로 이동, 스타일 변경 (녹색+전환아이콘)
- 테넌트 전환 이벤트를 openTenantConsole 호출로 통일
- 사이드바 스타일 메인과 통일 + 리포트 주의사항 정리
2026-03-13 10:18:23 +09:00

83 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\RolePermissionService;
use App\Services\RoleService;
use Illuminate\Http\Request;
use Illuminate\View\View;
class RoleController extends Controller
{
public function __construct(
private readonly RoleService $roleService,
private readonly RolePermissionService $rolePermissionService
) {}
/**
* 역할 목록 (Blade 화면만)
*/
public function index(Request $request): View
{
return view('roles.index');
}
/**
* 역할 생성 화면
*/
public function create(): View
{
$tenantId = session('selected_tenant_id');
// 테넌트 미선택 시 생성 불가
if (! $tenantId || $tenantId === 'all') {
return view('roles.create', [
'requireTenant' => true,
'menus' => collect(),
'permissionTypes' => [],
]);
}
// 메뉴 트리 조회 (권한 매트릭스용)
$menus = $this->rolePermissionService->getMenuTree($tenantId);
// 권한 유형 목록
$permissionTypes = ['view', 'create', 'update', 'delete', 'approve', 'export', 'manage'];
return view('roles.create', compact('menus', 'permissionTypes'));
}
/**
* 역할 수정 화면
* tenant-console/{tenantId}/roles/{id}/edit 에서
* $id에 tenantId가 들어오는 문제 방지 → route('id')로 명시적 추출
*/
public function edit(int $id): View
{
$id = (int) (request()->route('id') ?? $id);
$role = $this->roleService->getRoleById($id);
if (! $role) {
abort(404, '역할을 찾을 수 없습니다.');
}
// 역할이 속한 테넌트의 메뉴만 표시
$effectiveTenantId = $role->tenant_id;
// 메뉴 트리 조회 (권한 매트릭스용)
$menus = $this->rolePermissionService->getMenuTree($effectiveTenantId);
// 권한 유형 목록
$permissionTypes = ['view', 'create', 'update', 'delete', 'approve', 'export', 'manage'];
// 현재 역할의 권한 매트릭스 조회
$permissions = $this->rolePermissionService->getRolePermissionMatrix(
$role->id,
$effectiveTenantId,
$role->guard_name ?? 'web'
);
return view('roles.edit', compact('role', 'menus', 'permissionTypes', 'permissions'));
}
}