add logic in auth controller and login view for authentication

This commit is contained in:
LailaWulandarii 2025-12-27 02:31:10 +07:00
parent 09eadb8a5a
commit 9de4993af6
2 changed files with 100 additions and 12 deletions

View File

@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; // <--- WAJIB NAMBAH INI
use App\Models\User;
class AuthController extends Controller
{
// 1. Menampilkan Form Login
public function login()
{
return view('admin.login');
}
// 2. Memproses Login (POST)
public function authenticate(Request $request)
{
$request->validate([
'username' => ['required'],
'password' => ['required'],
]);
// 1. CEK USERNAME DULU
// Cari user berdasarkan username yang diinput
$user = User::where('username', $request->username)->first();
// Kalau user GAK KETEMU (Database kosong atau salah ketik)
if (!$user) {
return back()->withErrors([
'username' => 'Username tidak ditemukan.', // Error nempel di kolom username
])->onlyInput('username');
}
// 2. CEK PASSWORD
// Kalau user ketemu, kita cek passwordnya cocok gak sama yang di database
if (!Hash::check($request->password, $user->password)) {
return back()->withErrors([
'password' => 'Password salah, coba ingat-ingat lagi.', // Error nempel di kolom password
])->onlyInput('username');
}
// 3. KALAU LOLOS DUA-DUANYA -> LOGIN
Auth::login($user);
$request->session()->regenerate();
// Redirect sesuai role
$role = $user->role ?? 'admin';
if ($role === 'pemilik') {
return redirect()->intended(route('admin.beranda.pemilik'));
}
return redirect()->intended(route('admin.beranda'));
}
// 3. Logout
public function logout(Request $request)
{
Auth::logout(); // Hapus sesi login
$request->session()->invalidate(); // Matikan session
$request->session()->regenerateToken(); // Regenerasi token keamanan
// Redirect ke halaman login setelah logout
return redirect()->route('login');
}
}

View File

@ -16,25 +16,43 @@
<div class="login-page">
<div class="login-card">
<img src="{{ asset('img/logo.png') }}" alt="Flo.do Logo" class="login-logo">
<form action="" method="POST">
<form action="{{ route('login.proses') }}" method="POST">
@csrf
<div class="mb-2">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" class="form-control" id="username" name="username"
placeholder="Masukkan Usernamemu" style="font-size: 13px"required>
<input type="text" class="form-control @error('username') is-invalid @enderror" id="username"
name="username" value="{{ old('username') }}" placeholder="Masukkan Usernamemu"
style="font-size: 13px" required>
@error('username')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="mb-2">
<div class="mb-3">
<label class="form-label">Kata Sandi</label>
<div class="form-group position-relative has-icon-right">
<input type="password" class="form-control"style="font-size: 13px" id="passBaru"
placeholder="**************">
<div class="form-control-icon" style="font-size: 13px; cursor: pointer;"
onclick="toggleDynamic('passBaru', 'iconPass')">
<i class="bi bi-eye" style="font-size: 16px" id="iconPass"></i>
</div>
<div class="position-relative">
<input type="password" class="form-control @error('password') is-invalid @enderror"
style="font-size: 13px; padding-right: 40px;" id="passBaru" name="password"
placeholder="**************" required>
<span class="position-absolute top-50 end-0 translate-middle-y me-3"
onclick="toggleDynamic('passBaru', 'iconPass')" style="cursor: pointer;">
<i class="bi bi-eye text-secondary" style="font-size: 16px" id="iconPass"></i>
</span>
</div>
@error('password')
<div class="invalid-feedback d-block">
{{ $message }}
</div>
@enderror
</div>
<button type="submit" class="btn btn-primary rounded-pill w-100 py-2 mt-2">Masuk</button>