<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;

class AuthenticatedSessionController extends Controller
{
    /**
     * Display the login view.
     */
    public function create(): View // แสดงฟอร์ม login ให้ผู้ใช้งาน และ :View เป็น type hint ที่จะระบุว่า method นี้จะ return use Illuminate\View\View เท่านั้น
    {
        return view('auth.login'); // render view ชื่อ auth.login.blade.php (resources/views/auth/login.blade.php)
    }

    /**
     * Handle an incoming authentication request.
     */
    public function store(LoginRequest $request): RedirectResponse
    {
        $request->authenticate(); //เรียก method authenticate จาก LoginRequest เพื่อตรวจสอบข้อมูลการ login

        $request->session()->regenerate(); //สร้าง session ใหม่เพื่อป้องกันการลอคเข้าใช้งานซ้ำจากการลอคเข้าใช้งานอื่น

        // redirect ตาม role
        if (strtolower(Auth::user()->Level) === 'admin' || strtolower(Auth::user()->Level) === 'superadmin') { //
            return redirect()->intended(route('admin.dashboard', absolute: false));
        }
        return redirect()->intended(route('products.index', absolute: false));
    }

    /**
     * Destroy an authenticated session.
     */
    public function destroy(Request $request): RedirectResponse
    {
        Auth::guard('web')->logout();

        $request->session()->invalidate();

        $request->session()->regenerateToken();

        // Redirect ไป ServTrack แทนหน้าแรกของ sas-log
        // return redirect('http://203.185.101.206/ServTrack_Dev/Login.php');
        return redirect('/');
    }
}
