<?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);
    }
}
