From a36c5315b45072454a0569c2660966ea59b5b6b6 Mon Sep 17 00:00:00 2001 From: Nima8FT Date: Wed, 23 Apr 2025 11:18:30 +0330 Subject: [PATCH] Implement custom login, register, logout, and delete account functionalities --- .../Http/Controllers/Auth/LoginController.php | 39 +++++++ .../Controllers/Auth/LogoutController.php | 34 ++++++ .../Controllers/Auth/RegisterController.php | 37 +++++++ .../Http/Controllers/DashboardController.php | 15 +++ .../app/Http/Requests/LoginRequest.php | 29 +++++ .../app/Http/Requests/RegisterRequest.php | 30 ++++++ .../resources/views/auth/login.blade.php | 63 +++++++++++ .../resources/views/auth/register.blade.php | 58 ++++++++++ .../resources/views/dashboard.blade.php | 101 ++++++++++++++++++ Web-Application/Manually/routes/web.php | 17 +++ 10 files changed, 423 insertions(+) create mode 100644 Web-Application/Manually/app/Http/Controllers/Auth/LoginController.php create mode 100644 Web-Application/Manually/app/Http/Controllers/Auth/LogoutController.php create mode 100644 Web-Application/Manually/app/Http/Controllers/Auth/RegisterController.php create mode 100644 Web-Application/Manually/app/Http/Controllers/DashboardController.php create mode 100644 Web-Application/Manually/app/Http/Requests/LoginRequest.php create mode 100644 Web-Application/Manually/app/Http/Requests/RegisterRequest.php create mode 100644 Web-Application/Manually/resources/views/auth/login.blade.php create mode 100644 Web-Application/Manually/resources/views/auth/register.blade.php create mode 100644 Web-Application/Manually/resources/views/dashboard.blade.php diff --git a/Web-Application/Manually/app/Http/Controllers/Auth/LoginController.php b/Web-Application/Manually/app/Http/Controllers/Auth/LoginController.php new file mode 100644 index 0000000..ccc05b5 --- /dev/null +++ b/Web-Application/Manually/app/Http/Controllers/Auth/LoginController.php @@ -0,0 +1,39 @@ +only("email", "password"); + + $remember = $request->has('remember'); + + if (!Auth::attempt($credentials, $remember)) { + return back()->withErrors([ + 'email' => 'The provided credentials do not match our records.', + ])->onlyInput('email'); + } + + $request->session()->regenerate(); + + return redirect()->route('dashboard')->with("success", "login successfully"); + } catch (\Exception $e) { + return redirect() + ->route('login.create') + ->with('error', 'not login please try again' . $e->getMessage()); + } + } +} diff --git a/Web-Application/Manually/app/Http/Controllers/Auth/LogoutController.php b/Web-Application/Manually/app/Http/Controllers/Auth/LogoutController.php new file mode 100644 index 0000000..f7b12d0 --- /dev/null +++ b/Web-Application/Manually/app/Http/Controllers/Auth/LogoutController.php @@ -0,0 +1,34 @@ +session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect()->route('login')->with('success', 'logout successfully'); + } + + public function deleteAccount(Request $request) + { + $user = Auth::user(); + + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + $user->delete(); + + return redirect()->route('login')->with('success', 'Your account has been deleted successfully.'); + } +} diff --git a/Web-Application/Manually/app/Http/Controllers/Auth/RegisterController.php b/Web-Application/Manually/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..5628b83 --- /dev/null +++ b/Web-Application/Manually/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,37 @@ +only('name', 'email', 'password'); + $inputs['password'] = Hash::make($inputs['password']); + + $user = User::create($inputs); + + Auth::login($user); + + return redirect()->route('dashboard')->with('success', 'register successfully'); + } catch (\Exception $e) { + return redirect() + ->route('register.create') + ->with('error', 'not register please try again' . $e->getMessage()); + } + } +} diff --git a/Web-Application/Manually/app/Http/Controllers/DashboardController.php b/Web-Application/Manually/app/Http/Controllers/DashboardController.php new file mode 100644 index 0000000..95756fd --- /dev/null +++ b/Web-Application/Manually/app/Http/Controllers/DashboardController.php @@ -0,0 +1,15 @@ +|string> + */ + public function rules(): array + { + return [ + 'email' => 'required|email', + 'password' => 'required|min:8', + ]; + } +} diff --git a/Web-Application/Manually/app/Http/Requests/RegisterRequest.php b/Web-Application/Manually/app/Http/Requests/RegisterRequest.php new file mode 100644 index 0000000..c43e661 --- /dev/null +++ b/Web-Application/Manually/app/Http/Requests/RegisterRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:8|confirmed', + ]; + } +} diff --git a/Web-Application/Manually/resources/views/auth/login.blade.php b/Web-Application/Manually/resources/views/auth/login.blade.php new file mode 100644 index 0000000..0a329e3 --- /dev/null +++ b/Web-Application/Manually/resources/views/auth/login.blade.php @@ -0,0 +1,63 @@ +@extends('layouts.app') + +@section('content') +
+ +
+@endsection \ No newline at end of file diff --git a/Web-Application/Manually/resources/views/auth/register.blade.php b/Web-Application/Manually/resources/views/auth/register.blade.php new file mode 100644 index 0000000..5a4376d --- /dev/null +++ b/Web-Application/Manually/resources/views/auth/register.blade.php @@ -0,0 +1,58 @@ +@extends('layouts.app') + +@section('content') +
+ +
+@endsection \ No newline at end of file diff --git a/Web-Application/Manually/resources/views/dashboard.blade.php b/Web-Application/Manually/resources/views/dashboard.blade.php new file mode 100644 index 0000000..3338492 --- /dev/null +++ b/Web-Application/Manually/resources/views/dashboard.blade.php @@ -0,0 +1,101 @@ +@extends('layouts.app') + +@section('content') +
+ + +
+
+

+ {{ $user->email }} +

+ + @if (session('success')) +
+ {{ session('success') }} + +
+ @endif + +
+ {{-- Email Verification --}} + + @if (!$user->email_verified_at) +
+ @csrf + +
+

Your email is not verified.

+ @else +
+ ✅ Your Email Is Verified +
+ @endif + + {{-- Two Factor Auth --}} + @if (!$user->google2fa_secret) +
+ @csrf + +
+ @else +
+ @csrf + +
+ @endif + +
+
+
+ + + +
+@endsection \ No newline at end of file diff --git a/Web-Application/Manually/routes/web.php b/Web-Application/Manually/routes/web.php index 86a06c5..79d94d3 100644 --- a/Web-Application/Manually/routes/web.php +++ b/Web-Application/Manually/routes/web.php @@ -1,7 +1,24 @@ middleware('auth'); + +Route::get('register', [RegisterController::class, 'create'])->name('register'); +Route::post('register', [RegisterController::class, 'store'])->name('register.store'); + +Route::get('login', [LoginController::class, 'create'])->name('login'); +Route::post('login', [LoginController::class, 'store'])->name('login.store'); + +Route::group(['middleware' => 'auth'], function () { + Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard'); + + Route::post('logout', action: [LogoutController::class, 'logout'])->name('logout'); + Route::post('delete-account', action: [LogoutController::class, 'deleteAccount'])->name('delete.account'); });