83 lines
2.2 KiB
PHP
83 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class AuthenticationController extends Controller
|
|
{
|
|
public function login()
|
|
{
|
|
return view('login');
|
|
}
|
|
protected function redirectTo()
|
|
{
|
|
switch (Auth::user()->role) {
|
|
case 'siswa':
|
|
return route('siswa.dashboard');
|
|
case 'admin':
|
|
return route('admin.dashboard');
|
|
case 'guru':
|
|
return route('guru.dashboard');
|
|
}
|
|
}
|
|
|
|
function normalizePhoneToDatabase($phone)
|
|
{
|
|
$phone = preg_replace('/\D/', '', $phone);
|
|
|
|
if (substr($phone, 0, 1) === '0') {
|
|
$phone = substr($phone, 1);
|
|
}
|
|
|
|
if (substr($phone, 0, 2) === '62') {
|
|
$phone = substr($phone, 2);
|
|
}
|
|
|
|
if (substr($phone, 0, 2) === '62') {
|
|
$phone = substr($phone, 2);
|
|
}
|
|
|
|
return $phone;
|
|
}
|
|
public function auth(Request $request){
|
|
// Validasi input
|
|
$validated = $request->validate(
|
|
[
|
|
'username' => 'required',
|
|
'password' => 'required'
|
|
],
|
|
[
|
|
'username.required' => 'Masukkan username Anda.',
|
|
'password.required' => 'Masukkan password Anda.'
|
|
]
|
|
);
|
|
|
|
$remember = $request->filled('remember');
|
|
|
|
$user = User::where('username', $request->username)
|
|
->first();
|
|
|
|
if ($user && Auth::attempt(['username' => $user->username, 'password' => $request->password], $remember)) {
|
|
$request->session()->regenerate();
|
|
|
|
return redirect($this->redirectTo())->with('success', '🤖 Selamat datang Kembali');
|
|
}
|
|
|
|
return back()->with('statusError', 'Akun anda tidak ditemukan, Periksa kembali username dan password anda!');
|
|
}
|
|
|
|
public function logout(Request $request): RedirectResponse{
|
|
Auth::logout();
|
|
|
|
$request->session()->invalidate();
|
|
|
|
$request->session()->regenerateToken();
|
|
|
|
return redirect('/login')->with('statusSuccess', 'Logout berhasil');
|
|
}
|
|
}
|