<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;


class AuthController extends Controller
{
    public function index()
    {
        return view('auth.index', [
            'title' => 'Login',
        ]);
    }

    // public function authenticate(Request $request)
    // {
    //     $customMessages = [
    //         'required' => 'Kolom :attribute wajib diisi.',
    //     ];

    //     $credentials = $request->validate([
    //         'username' => 'required',
    //         'password' => 'required'
    //     ], $customMessages);

    //     if (Auth::attempt($credentials)) {
    //         $request->session()->regenerate();
    //         return redirect()->intended('/dashboard');
    //     }

    //     return back()->with('loginError', 'Login Failed');
    // }
    // public function authenticate(Request $request)
    // {
    //     $customMessages = [
    //         'required' => 'Kolom :attribute wajib diisi.',
    //     ];

    //     // Validasi input
    //     $request->validate([
    //         'username' => 'required',
    //         'password' => 'required'
    //     ], $customMessages);

    //     // Ambil kredensial pengguna dari permintaan
    //     $username = $request->input('username');
    //     $password = $request->input('password');

    //     // Cari pengguna berdasarkan username
    //     $user = User::where('username', $username)->first();

    //     // Verifikasi kata sandi pengguna
    //     if ($user) {
    //         // Jika pengguna ditemukan, tetapi kata sandi salah
    //         if ($password !== $user->password) {
    //             return back()->with('loginError', 'Password salah untuk username ' . $username);
    //         }

    //         // Jika verifikasi berhasil, autentikasi pengguna
    //         Auth::login($user);

    //         // Regenerasi session
    //         $request->session()->regenerate();

    //         // Redirect ke halaman yang dimaksud
    //         return redirect()->intended('/dashboard');
    //     }

    //     // Jika pengguna tidak ditemukan
    //     return back()->with('loginError', 'Username tidak ditemukan');
    // }

    public function authenticate(Request $request)
    {
        $customMessages = [
            'required' => 'Kolom :attribute wajib diisi.',
        ];

        // Validasi input
        $request->validate([
            'username' => 'required',
            'password' => 'required'
        ], $customMessages);

        // Ambil kredensial pengguna dari permintaan
        $username = $request->input('username');
        $password = $request->input('password');



        // Cari pengguna berdasarkan username
        $user = User::where('username', $username)->first();

        // Verifikasi kata sandi pengguna
        if ($user) {
            // Jika kata sandi cocok
            if ($password === $user->password) {
                // Jika verifikasi berhasil, autentikasi pengguna
                Auth::login($user);

                // Regenerasi session
                $request->session()->regenerate();

                // Redirect ke halaman yang dimaksud
                return redirect()->intended('/dashboard');
            } else {
                // Simpan username dalam session untuk digunakan kembali jika autentikasi gagal
                session(['username' => $username]);
                // Jika kata sandi tidak cocok, kembalikan ke halaman login dengan pesan kesalahan
                return back()->with('loginError', 'Password salah. untuk username ' . $username . ' Silakan coba lagi.');
            }
        } else {
            // Jika pengguna tidak ditemukan, hapus session username
            $request->session()->forget('username');
            // Jika pengguna tidak ditemukan
            return back()->with('loginError', 'Username tidak ditemukan');
        }
    }

    public function logout(Request $request)
    {
        Auth::logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
        return redirect('/');
    }
}
