validate([ 'first_name' => 'required|string|max:255', 'last_name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'phone' => 'required|string|max:15', 'password' => 'required|string|min:8|confirmed', ]); $user = User::create([ 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'email' => $request->email, 'phone' => $request->phone, 'password' => Hash::make($request->password), ]); Auth::login($user); return redirect('/')->with('success', 'Registration successful! Welcome to your dashboard.'); } public function login(Request $request) { $credentials = $request->validate([ 'email' => 'required|email', 'password' => 'required|string', ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); return redirect()->intended('/')->with('success', 'Welcome back!'); } return back()->withErrors([ 'email' => 'The provided credentials do not match our records.', ])->onlyInput('email'); } public function logout(Request $request) { try { if (Auth::check()) { Auth::logout(); } $request->session()->forget(['user_id', 'user_name']); if ($request->session()->isStarted()) { $request->session()->invalidate(); $request->session()->regenerateToken(); } return response()->json(['success' => true]); } catch (\Exception $e) { Log::error('Logout Server Error: ' . $e->getMessage()); if (isset($_SESSION)) { session_destroy(); } return response()->json(['success' => true, 'forced' => true]); } } public function update(Request $request) { $request->validate([ 'first_name' => 'required|string|max:255', 'last_name' => 'required|string|max:255', 'phone' => 'nullable|string|max:20', ]); $user = Auth::user(); $user->update([ 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'phone' => $request->phone, ]); return redirect()->back()->with('success', 'Profile updated successfully!'); } }