P粉0065406002023-09-06 12:41:06
hii, your logout functionality is protected by middleware, you also need to add dashboard routing middleware, you can group routes that require authentication middleware.
Route::middleware('auth')->group(function () { Route::get('/dashboard', [AuthController::class, 'dashboard'])->name('dashboard'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); });
P粉6765887382023-09-06 00:56:28
Your route
Route::get('login', [FrontendAuthController::class, 'loginGet'])->name('login'); Route::post('login', [FrontendAuthController::class, 'loginPost']); Route::post('logout', [FrontendAuthController::class, 'logout'])->name('logout'); Route::get('register', [FrontendAuthController::class, 'registerGet'])->name('register'); Route::post('register', [FrontendAuthController::class, 'registerPost']);
Your controller:
<?php namespace App\Http\Controllers\Frontend; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Session; class FrontendAuthController extends Controller { public function loginGet(Request $request) { return view('front.auth.login'); } public function loginPost(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required', ], [ 'email.required' => 'The email field is required.', 'email.email' => 'Please enter a valid email address.', 'password.required' => 'The password field is required.', ]); $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { return redirect()->intended('/'); } else { return redirect()->back()->withErrors(['email' => 'These credentials do not match our records.']); } } public function logout() { Auth::logout(); Session::flush(); // Clear all session data Session::regenerate(); // Regenerate the session ID return redirect()->route('login'); } public function registerGet() { return view('front.auth.register'); } public function registerPost(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:8|confirmed', ], [ 'name.required' => 'The name field is required.', 'email.required' => 'The email field is required.', 'email.email' => 'Please enter a valid email address.', 'email.unique' => 'This email address is already registered.', 'password.required' => 'The password field is required.', 'password.min' => 'The password must be at least 8 characters.', 'password.confirmed' => 'The password confirmation does not match.', ]); // Create a new user record $user = new User(); $user->name = $request->input('name'); $user->email = $request->input('email'); $user->password = Hash::make($request->input('password')); $user->save(); // Log in the newly registered user Auth::login($user); // Redirect the user to the home page or any other desired page return redirect()->intended('/'); } }
Your login blade
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Sign In</title> <link rel="stylesheet" href="{{ url('frontend/css/style.css') }}"> </head> <body> <div class="main"> <section class="signup"> <div class="container"> <div class="signup-content"> <form id="signup-form" class="signup-form" method="POST" action="{{ url('login') }}"> @csrf <!-- <img src="images/logo.svg" alt="">--> <h2 class="form-title">Login Here</h2> <div class="form-group"> <input type="email" class="form-input" value="{{ old('email') }}" name="email" id="email" placeholder="Your Email" /> </div> <div class="form-group"> <input type="text" class="form-input" name="password" id="password" placeholder="Password" /> <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span> </div> @error('email') <div style="color: red">{{ $message }}</div> @enderror @error('password') <div style="color: red">{{ $message }}</div> @enderror <div class="form-group"> <input type="submit" name="submit" id="submit" class="form-submit" value="Sign in" /> </div> </form> <p class="loginhere"> New User? <a href="reg-form.html" class="loginhere-link">Register here</a> </p> </div> </div> </section> </div> </body> </html>
Your registration page
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Register</title> <link rel="stylesheet" href="{{ url('frontend/css/style.css') }}"> </head> <body> <div class="main"> <section class="signup"> <div class="container"> <div class="signup-content"> <form id="signup-form" class="signup-form" method="POST" action="{{ route('register') }}"> @csrf <h2 class="form-title">Register Here</h2> <div class="form-group"> <input type="text" class="form-input" value="{{ old('name') }}" name="name" id="name" placeholder="Your Name" /> </div> <div class="form-group"> <input type="email" class="form-input" value="{{ old('email') }}" name="email" id="email" placeholder="Your Email" /> </div> <div class="form-group"> <input type="password" class="form-input" name="password" id="password" placeholder="Password" /> <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span> </div> <div class="form-group"> <input type="password" class="form-input" name="password_confirmation" id="password_confirmation" placeholder="Confirm Password" /> </div> @error('name') <div style="color: red">{{ $message }}</div> @enderror @error('email') <div style="color: red">{{ $message }}</div> @enderror @error('password') <div style="color: red">{{ $message }}</div> @enderror <div class="form-group"> <input type="submit" name="submit" id="submit" class="form-submit" value="Register" /> </div> </form> <p class="loginhere"> Already have an account? <a href="{{ route('login') }}" class="loginhere-link">Login here</a> </p> </div> </div> </section> </div> </body> </html>
I think this will solve all your questions