giftcon_dev/app/Http/Middleware/LegacyAuth.php
2026-02-02 17:48:22 +09:00

45 lines
1.4 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class LegacyAuth
{
public function handle(Request $request, Closure $next)
{
// 레거시 세션: 로그인 플래그 + memNo 둘 다 확인
$loggedIn = (bool) $request->session()->get('_sess._login_', false);
$memNo = (int) $request->session()->get('_sess._mno', 0);
if (!$loggedIn || $memNo <= 0) {
// GET만 intended 저장
if ($request->isMethod('get')) {
$request->session()->put('url.intended', $request->fullUrl());
}
// JSON을 기대하는 요청이면 JSON 401
// (fetch/axios는 Accept: application/json 넣으면 expectsJson()이 안정적으로 동작)
if ($request->expectsJson()) {
return response()->json([
'ok' => false,
'message' => '로그인 정보가 확인되지 않습니다. 다시 로그인해 주세요.',
'redirect' => route('web.auth.login'),
], 401);
}
// 일반 웹 요청: 로그인 페이지로
return redirect()->route('web.auth.login')
->with('ui_dialog', [
'type' => 'alert',
'title' => '안내',
'message' => '로그인 필요합니다.',
]);
}
return $next($request);
}
}