본문으로 바로가기

라우터 url에 popup 추가하는게 편함

<?php
namespace App\Http\Middleware;

use App\Helper\ReturnMessage;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session;


class CheckSessionValue
{

    public function handle(Request $request, Closure $next)
    {
        Log::info("🔥 CheckSessionValue handle() 호출됨");

        $return_message = new ReturnMessage();

        // 현재 요청의 URL을 가져옵니다.
        $currentUrl = trim($request->getPathInfo());
        //dd($currentUrl);

        // 만약 현재 URL이 로그인 페이지인 경우, 세션 체크를 하지 않고 통과시킵니다.
        if ($currentUrl === 'login') {
            return $next($request);
        }


        if (!Session::has('uid')) {

            // URL에 'popup' 이 포함되어 있는지 체크
            $isPopup = str_contains($currentUrl, 'popup');
            if ($isPopup) {
                return response(
                    '<script>
                    alert("세션이 만료되었습니다. 다시 로그인 해주세요.");
                    if (window.opener) {
                        window.opener.location.reload();
                    }
                    window.close();
                </script>',
                    200
                )->header('Content-Type', 'text/html; charset=UTF-8');
            }


            // 일반 요청이면 로그인 페이지로 리다이렉트
            return redirect()->route('login');
        }

        return $next($request);
    }
}