From e3549b474989c328de639e019956bc25c2dfb4fc Mon Sep 17 00:00:00 2001 From: hatame Date: Sun, 16 Aug 2026 10:26:08 +0330 Subject: [PATCH] git add . git commit "add user authentication" --- app/Enums/UserGender.php | 9 + app/Enums/UserMaritalStatus.php | 10 + app/Http/Controllers/Auth/LoginController.php | 28 ++- .../Controllers/Auth/LogoutController.php | 12 +- .../Controllers/Auth/RegisterController.php | 4 +- app/Http/Controllers/DashboardController.php | 17 ++ app/Http/Controllers/FavoriteController.php | 10 + app/Http/Controllers/ProfileController.php | 21 ++ ...ginRequest.php => FavoritePostRequest.php} | 2 +- app/Http/Requests/LoginPostRequest.php | 37 ++++ app/Http/Requests/ProfileUpdateRequest.php | 28 +++ ...terRequest.php => RegisterPostRequest.php} | 7 +- public/uploads/users/1786859789.jpg | Bin 0 -> 17393 bytes resources/views/auth/login.blade.php | 192 ++++++++++++++---- resources/views/layouts/header.blade.php | 30 +-- resources/views/users/dashboard.blade.php | 111 ++++++++++ .../views/users/favorite/index.blade.php | 3 + resources/views/users/profile/edit.blade.php | 3 + routes/web.php | 10 + 19 files changed, 460 insertions(+), 74 deletions(-) create mode 100644 app/Enums/UserGender.php create mode 100644 app/Enums/UserMaritalStatus.php create mode 100644 app/Http/Controllers/DashboardController.php create mode 100644 app/Http/Controllers/FavoriteController.php create mode 100644 app/Http/Controllers/ProfileController.php rename app/Http/Requests/{LoginRequest.php => FavoritePostRequest.php} (92%) create mode 100644 app/Http/Requests/LoginPostRequest.php create mode 100644 app/Http/Requests/ProfileUpdateRequest.php rename app/Http/Requests/{RegisterRequest.php => RegisterPostRequest.php} (93%) create mode 100644 public/uploads/users/1786859789.jpg create mode 100644 resources/views/users/dashboard.blade.php create mode 100644 resources/views/users/favorite/index.blade.php create mode 100644 resources/views/users/profile/edit.blade.php diff --git a/app/Enums/UserGender.php b/app/Enums/UserGender.php new file mode 100644 index 0000000..198cb74 --- /dev/null +++ b/app/Enums/UserGender.php @@ -0,0 +1,9 @@ +validated(); + + if (!Auth::attempt($user)) { + return back()->withErrors([ + 'general' => 'شماره موبایل یا رمز عبور اشتباه است.', + ])->withInput(); + } + + $request->session()->regenerate(); + + return redirect()->route('users.dashboard'); + } + } diff --git a/app/Http/Controllers/Auth/LogoutController.php b/app/Http/Controllers/Auth/LogoutController.php index 25f566a..948af54 100644 --- a/app/Http/Controllers/Auth/LogoutController.php +++ b/app/Http/Controllers/Auth/LogoutController.php @@ -4,8 +4,18 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class LogoutController extends Controller { - // + public function index() + { + Auth::logout(); + + Request()->session()->invalidate(); + Request()->session()->regenerateToken(); + + return redirect()->route('index'); + + } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 79fa756..7f0438d 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Auth; use App\Enums\UserStatus; use App\Http\Controllers\Controller; -use App\Http\Requests\RegisterRequest; +use App\Http\Requests\RegisterPostRequest; use App\Models\Province; use App\Models\User; use Illuminate\Http\Request; @@ -22,7 +22,7 @@ class RegisterController extends Controller return view('auth.register',compact('withoutHeader','withoutFooter','withoutHero','provinces')); } - public function post(RegisterRequest $request) + public function post(RegisterPostRequest $request) { $inputs = $request->validated(); diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php new file mode 100644 index 0000000..cefe72d --- /dev/null +++ b/app/Http/Controllers/DashboardController.php @@ -0,0 +1,17 @@ +|string> + */ + public function rules(): array + { + return [ + 'mobile'=>[ + 'required', + 'string', + 'ir_mobile' + ], + 'password'=>[ + 'required', + 'string' + ] + ]; + } +} diff --git a/app/Http/Requests/ProfileUpdateRequest.php b/app/Http/Requests/ProfileUpdateRequest.php new file mode 100644 index 0000000..49d52b1 --- /dev/null +++ b/app/Http/Requests/ProfileUpdateRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + ]; + } +} diff --git a/app/Http/Requests/RegisterRequest.php b/app/Http/Requests/RegisterPostRequest.php similarity index 93% rename from app/Http/Requests/RegisterRequest.php rename to app/Http/Requests/RegisterPostRequest.php index be17aab..40d16a3 100644 --- a/app/Http/Requests/RegisterRequest.php +++ b/app/Http/Requests/RegisterPostRequest.php @@ -6,7 +6,7 @@ use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; -class RegisterRequest extends FormRequest +class RegisterPostRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -41,7 +41,7 @@ class RegisterRequest extends FormRequest 'national_code' => [ 'required', 'unique:users,national_code', - 'ir_national_id' +// 'ir_national_id' ], 'gender' => [ @@ -72,7 +72,8 @@ class RegisterRequest extends FormRequest 'username' => [ 'required', - 'unique:users,username' + 'unique:users,username', + 'regex:/^[A-Za-z0-9]+$/', ], 'image' => [ 'nullable', diff --git a/public/uploads/users/1786859789.jpg b/public/uploads/users/1786859789.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c2daa202b52b84757355c6ceac73040d1336c41 GIT binary patch literal 17393 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 +
-
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ @endsection diff --git a/resources/views/layouts/header.blade.php b/resources/views/layouts/header.blade.php index 41fc35a..699c099 100644 --- a/resources/views/layouts/header.blade.php +++ b/resources/views/layouts/header.blade.php @@ -1050,41 +1050,27 @@
  • - اولویت ها + پروفایل + +
  • +
  • + + تغییر رمز عبور
  • - اطلاعیه +علاقه مندی ها
  • - روش های پرداخت + نظرات قبلی
  • -
  • - - مسافران - -
  • - -
  • - - تاریخچه سفر - -
  • - -
  • - - علاقه‌مندی‌ها - -
  • - -
  • @csrf diff --git a/resources/views/users/dashboard.blade.php b/resources/views/users/dashboard.blade.php new file mode 100644 index 0000000..8970743 --- /dev/null +++ b/resources/views/users/dashboard.blade.php @@ -0,0 +1,111 @@ +@extends('layouts.app') + +@section('content') + +
    + +
    + + + + +
    + +
    + +
    + داشبورد +
    + +
    + +

    + سلام {{ $user->first_name }} {{ $user->last_name }} 👋 +

    + +

    + به پنل کاربری خود خوش آمدید. +

    + +
    + +

    + نام کاربری: + {{ $user->username }} +

    + +

    + ایمیل: + {{ $user->email }} +

    + +

    + موبایل: + {{ $user->mobile }} +

    + +
    + +
    + +
    + +
    + +
    + +@endsection diff --git a/resources/views/users/favorite/index.blade.php b/resources/views/users/favorite/index.blade.php new file mode 100644 index 0000000..c510322 --- /dev/null +++ b/resources/views/users/favorite/index.blade.php @@ -0,0 +1,3 @@ +
    + +
    diff --git a/resources/views/users/profile/edit.blade.php b/resources/views/users/profile/edit.blade.php new file mode 100644 index 0000000..49e432a --- /dev/null +++ b/resources/views/users/profile/edit.blade.php @@ -0,0 +1,3 @@ +
    + +
    diff --git a/routes/web.php b/routes/web.php index a634e19..7e39222 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,8 +1,18 @@ name('index'); + +Route::prefix('users')->name('users.')->middleware('auth:web')->group(function (){ + Route::get('/',[DashboardController::class,'index'])->name('dashboard'); + + Route::get('/profile/edit',[ProfileController::class,'edite'])->name('profile.edit'); + Route::put('/profile/update',[ProfileController::class,'update'])->name('profile.update'); + +});