match_making/app/Http/Controllers/Auth/AuthenticatedSessionController.php
2025-01-02 09:09:28 +07:00

83 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Providers\RouteServiceProvider;
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
{
return view('auth.login');
}
/**
* Handle an incoming authentication request.
*/
// public function store(LoginRequest $request): RedirectResponse
// {
// $request->authenticate();
// $request->session()->regenerate();
// return redirect()->intended(RouteServiceProvider::HOME);
// }
public function store(LoginRequest $request)
{
// Autentikasi kredensial
$credentials = $request->only('email', 'password');
if (auth()->attempt($credentials)) {
// Regenerasi ID sesi untuk keamanan
$request->session()->regenerate();
// Mendapatkan peran pengguna yang terautentikasi
$userRole = auth()->user()->role;
// Pengalihan berdasarkan peran pengguna
switch ($userRole) {
case 'pemerintah':
return redirect()->route('pemerintah.dashboard');
case 'investor':
return redirect()->route('investor.dashboard');
case 'akademisi':
return redirect()->route('akademisi.dashboard');
case 'umkm':
return redirect()->route('umkm.dashboard');
case 'komunitas':
return redirect()->route('komunitas.dashboard');
default:
Auth::guard('web')->logout();
return redirect()->route('login')->with('status', 'Role tidak valid.');
}
}
// Jika kredensial tidak valid
return redirect()->route('login')->with('error', 'Email atau password salah.');
}
/**
* Destroy an authenticated session.
*/
public function destroy(Request $request): RedirectResponse
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}