Files
sam-manage/app/Http/Middleware/SetTenantContext.php

43 lines
1.2 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Middleware;
use App\Models\Tenants\Tenant;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class SetTenantContext
{
/**
* 테넌트 콘솔 새창에서 URL의 tenantId를 컨텍스트로 설정
* 메인 창의 세션에는 영향을 주지 않음
*/
public function handle(Request $request, Closure $next): Response
{
$tenantId = $request->route('tenantId');
if (! $tenantId) {
abort(404, '테넌트 ID가 필요합니다.');
}
$tenant = Tenant::find($tenantId);
if (! $tenant) {
abort(404, '테넌트를 찾을 수 없습니다.');
}
// 요청 범위에서만 테넌트 컨텍스트 설정 (세션 변경 없음)
$request->attributes->set('tenant_console_id', $tenantId);
$request->attributes->set('tenant_console', $tenant);
$request->attributes->set('tenant_id', (int) $tenantId);
// 뷰에서 사용할 수 있도록 공유
view()->share('consoleTenant', $tenant);
view()->share('consoleTenantId', $tenantId);
view()->share('isTenantConsole', true);
return $next($request);
}
}