user(); // 로그인되지 않은 경우 (auth 미들웨어가 처리하므로 여기선 패스) if (! $user) { return $next($request); } // 본사 소속이 아닌 경우 강제 로그아웃 if (! $user->belongsToHQ()) { auth()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); $message = '본사 소속 직원만 관리자 패널에 접근할 수 있습니다.'; // HTMX/AJAX 요청인 경우 JSON 응답 if ($request->header('HX-Request') || $request->expectsJson() || $request->ajax()) { return response()->json([ 'success' => false, 'message' => $message, 'redirect' => '/login', ], 403); } return redirect('/login')->withErrors(['email' => $message]); } // 비활성 계정인 경우 강제 로그아웃 if (! $user->is_active) { auth()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); $message = '비활성화된 계정입니다. 관리자에게 문의하세요.'; // HTMX/AJAX 요청인 경우 JSON 응답 if ($request->header('HX-Request') || $request->expectsJson() || $request->ajax()) { return response()->json([ 'success' => false, 'message' => $message, 'redirect' => '/login', ], 403); } return redirect('/login')->withErrors(['email' => $message]); } return $next($request); } }