From 80656203c060f9377fb2212cdfa540153da94e95 Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:36:06 +0000 Subject: [PATCH 1/7] Route protected by Auth --- routes/web.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/routes/web.php b/routes/web.php index 71d04297..77d0529c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,8 +20,10 @@ Route::get('users', [\App\Http\Controllers\UserController::class, 'index'])->name('users.index'); // Task: profile functionality should be available only for logged-in users -Route::get('profile', [\App\Http\Controllers\ProfileController::class, 'show'])->name('profile.show'); -Route::put('profile', [\App\Http\Controllers\ProfileController::class, 'update'])->name('profile.update'); +Route::group(['middleware' => 'auth'], function () { + Route::get('profile', [\App\Http\Controllers\ProfileController::class, 'show'])->name('profile.show'); + Route::put('profile', [\App\Http\Controllers\ProfileController::class, 'update'])->name('profile.update'); +}); // Task: this "/secretpage" URL should be visible only for those who VERIFIED their email // Add some middleware here, and change some code in app/Models/User.php to enable this @@ -33,4 +35,4 @@ Route::view('/verysecretpage', 'verysecretpage') ->name('verysecretpage'); -require __DIR__.'/auth.php'; +require __DIR__ . '/auth.php'; From bf75ab3ef3595ab7e542d7a8167897e73c28dd5a Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:36:24 +0000 Subject: [PATCH 2/7] Link visible to logged-in users --- resources/views/layouts/navigation.blade.php | 129 ++++++++++--------- 1 file changed, 67 insertions(+), 62 deletions(-) diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index 785936e7..99014ca4 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -6,7 +6,7 @@
- +
@@ -16,49 +16,53 @@ {{ __('Users') }} {{-- Task: this "Profile" link should be visible only to logged-in users --}} - - {{ __('Profile') }} - + @auth + + {{ __('Profile') }} + + @endauth @@ -66,13 +70,13 @@ class="flex items-center text-sm font-medium text-gray-500 transition duration-1
@@ -80,38 +84,39 @@ class="inline-flex justify-center items-center p-2 text-gray-400 rounded-md tran - @@ -40,7 +40,7 @@ class="block mt-1 w-full" class="block mt-1 w-full" type="email" name="email" - value="???" + value="{{Auth::user()->email}}" required /> From 13b568ed03da713705a39f9b9ab66e69ef78b805 Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:43:53 +0000 Subject: [PATCH 4/7] Profile Fields Update --- resources/views/auth/profile.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/auth/profile.blade.php b/resources/views/auth/profile.blade.php index 9aad78b6..27ab8a1b 100644 --- a/resources/views/auth/profile.blade.php +++ b/resources/views/auth/profile.blade.php @@ -29,7 +29,7 @@ class="block mt-1 w-full" type="text" name="name" - value="{{Auth::user()->name}}" + value="{{auth()->user()->name}}" required /> @@ -40,7 +40,7 @@ class="block mt-1 w-full" class="block mt-1 w-full" type="email" name="email" - value="{{Auth::user()->email}}" + value="{{auth()->user()->email}}" required /> From 8d63ef500218809c32d2e583f5e5594f225bc243 Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:23:48 +0000 Subject: [PATCH 5/7] Profile Update. --- app/Http/Controllers/ProfileController.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index e0093a49..6ab99852 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Http\Requests\ProfileUpdateRequest; +use Illuminate\Support\Facades\Hash; class ProfileController extends Controller { @@ -14,7 +15,14 @@ public function show() public function update(ProfileUpdateRequest $request) { // Task: fill in the code here to update name and email + $user = $request->user(); + $user->update($request->safe()->only(['name','email'])); // Also, update the password if it is set + if ($request->filled('password')) { + $user->update([ + 'password'=>Hash::make($request->password) + ]); + } return redirect()->route('profile.show')->with('success', 'Profile updated.'); } From e7d5102058f9f5f984ef12b27de515f027a9ba3d Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:24:20 +0000 Subject: [PATCH 6/7] Email verification and password confirmation --- app/Models/User.php | 2 +- routes/web.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index e23e0905..12a2354b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -8,7 +8,7 @@ use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; -class User extends Authenticatable +class User extends Authenticatable implements MustVerifyEmail { use HasApiTokens, HasFactory, Notifiable; diff --git a/routes/web.php b/routes/web.php index 77d0529c..e8b9d607 100644 --- a/routes/web.php +++ b/routes/web.php @@ -28,11 +28,11 @@ // Task: this "/secretpage" URL should be visible only for those who VERIFIED their email // Add some middleware here, and change some code in app/Models/User.php to enable this Route::view('/secretpage', 'secretpage') - ->name('secretpage'); + ->name('secretpage')->middleware(['auth', 'verified']); // Task: this "/verysecretpage" URL should ask user for verifying their password once again // You need to add some middleware here Route::view('/verysecretpage', 'verysecretpage') - ->name('verysecretpage'); + ->name('verysecretpage')->middleware(['auth', 'password.confirm']); require __DIR__ . '/auth.php'; From e9a1e244540fc5be54324951dbe7abea23647f7b Mon Sep 17 00:00:00 2001 From: PappaLaity <38842298+PappaLaity@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:24:38 +0000 Subject: [PATCH 7/7] password should have at least one letter --- app/Http/Controllers/Auth/RegisteredUserController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index d8d29eb5..c680e4ae 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -37,7 +37,7 @@ public function store(Request $request) $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'password' => ['required', 'confirmed', Rules\Password::defaults(), 'regex:/[a-zA-Z]/'], ]); $user = User::create([