Laravel admin login logout without any package Use.
Route::controller(AdminController::class)->group(function () {
Route::get('/admin/login', 'adminLogin')->name('admin.login');
Route::get('/admin/dashboard', 'adminDashboard')->name('admin.dashboard');
Route::get('admin/logout', 'adminLogout')->name('admin.logout');
Route::post('/login', 'login')->name('admin.login.submit');
});
//controller code
class AdminController extends Controller
{
public function adminDashboard()
{
return view('admin.index');
} //End method
public function adminLogin()
{
if (Auth::check()) {
return redirect('/admin/dashboard'); // Redirect if already logged in
}
return view('admin.admin_login');
} //End method
// Handle login
public function login(Request $request)
{
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
return redirect()->intended('/admin/dashboard');
}
return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
]);
}
public function adminLogout(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/admin/login');
} //End adminLogout method
}
//login form blade code,
<div class="form-body">
<form class="row g-3" method="POST" action="{{ route('admin.login.submit') }}">
@csrf
<div class="col-12">
<label for="inputEmailAddress" class="form-label">Email Address</label>
<input type="email" class="form-control" id="email" type="email" name="email" :value="old('email')" placeholder="Email Address">
</div>
<div class="col-12">
<label for="inputChoosePassword" class="form-label">Enter Password</label>
<div class="input-group" id="show_hide_password">
<input type="password"
name="password" class="form-control border-end-0" id="password" placeholder="Enter Password"> <a href="javascript:;" class="input-group-text bg-transparent"><i class='bx bx-hide'></i></a>
</div>
</div>
<div class="col-12">
<div class="d-grid">
<button type="submit" class="btn btn-primary"><i class="bx bxs-lock-open"></i>Sign in</button>
</div>
</div>
</form>
</div>
No comments