From f29f51820b51da92b20d8f32df2e98f22bb7c35d Mon Sep 17 00:00:00 2001 From: anne-maina Date: Thu, 7 Nov 2024 16:21:48 +0300 Subject: [PATCH 1/4] Completed Auth tasks --- .../Auth/RegisteredUserController.php | 2 +- app/Http/Controllers/ProfileController.php | 18 ++++++++++++++++++ app/Models/User.php | 2 +- resources/views/auth/profile.blade.php | 4 ++-- resources/views/layouts/navigation.blade.php | 6 ++++++ routes/web.php | 14 ++++++++------ 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index d8d29eb5..ee3c1eab 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([ diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index e0093a49..1592c9bc 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 Symfony\Component\HttpKernel\Profiler\Profile; class ProfileController extends Controller { @@ -16,6 +17,23 @@ public function update(ProfileUpdateRequest $request) // Task: fill in the code here to update name and email // Also, update the password if it is set + // Get the authenticated user + $user = auth()->user(); + + // Update name and email + $user->name = $request->name; + $user->email = $request->email; + + // Check if a new password is provided + if ($request->filled('password')) { + $user->password = bcrypt($request->password); + } + + // Save the updated user information to the database + $user->save(); + + // Redirect to the profile page with a success message return redirect()->route('profile.show')->with('success', 'Profile updated.'); + } } diff --git a/app/Models/User.php b/app/Models/User.php index e23e0905..d2d458f8 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/resources/views/auth/profile.blade.php b/resources/views/auth/profile.blade.php index 70e8a8e1..c16e6902 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="???" + 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="???" + value="{{ auth()->user()->email }}" required /> diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index 785936e7..b98bb3a8 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -16,9 +16,15 @@ {{ __('Users') }} {{-- Task: this "Profile" link should be visible only to logged-in users --}} + @auth {{ __('Profile') }} + @else + + {{ __('Login') }} + + @endauth diff --git a/routes/web.php b/routes/web.php index 71d04297..11035121 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,17 +20,19 @@ 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::middleware('auth')->group(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 -Route::view('/secretpage', 'secretpage') - ->name('secretpage'); +Route::middleware(['auth', 'verified'])->view('/secretpage', 'secretpage') +->name('secretpage');; // 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'); +Route::middleware(['auth', 'password.confirm'])->view('/verysecretpage', 'verysecretpage') +->name('verysecretpage'); require __DIR__.'/auth.php'; From 4e75d0b2aa4028464ed0e5b1db38c8c6a9bfa105 Mon Sep 17 00:00:00 2001 From: anne-maina Date: Tue, 12 Nov 2024 10:34:54 +0300 Subject: [PATCH 2/4] changed secret page route --- routes/web.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 11035121..7f9e63cc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -28,7 +28,7 @@ // 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::middleware(['auth', 'verified'])->view('/secretpage', 'secretpage') -->name('secretpage');; +->name('secretpage'); // Task: this "/verysecretpage" URL should ask user for verifying their password once again // You need to add some middleware here From d5811bf9c3ea1f164515b823f0b9e73f872dcc94 Mon Sep 17 00:00:00 2001 From: anne-maina Date: Tue, 12 Nov 2024 10:40:41 +0300 Subject: [PATCH 3/4] route changes --- routes/web.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/routes/web.php b/routes/web.php index 7f9e63cc..ad559536 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,8 +27,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::middleware(['auth', 'verified'])->view('/secretpage', 'secretpage') -->name('secretpage'); + +Route::middleware(['auth', 'verified'])->group(function () { + Route::view('/secretpage', 'secretpage')->name('secretpage'); +}); + // Task: this "/verysecretpage" URL should ask user for verifying their password once again // You need to add some middleware here From 15d19bf2d49d4df89b252ed582543b7fb2d47b70 Mon Sep 17 00:00:00 2001 From: anne-maina Date: Tue, 12 Nov 2024 10:43:52 +0300 Subject: [PATCH 4/4] route changes --- routes/web.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/routes/web.php b/routes/web.php index ad559536..2e4cc362 100644 --- a/routes/web.php +++ b/routes/web.php @@ -35,7 +35,9 @@ // Task: this "/verysecretpage" URL should ask user for verifying their password once again // You need to add some middleware here -Route::middleware(['auth', 'password.confirm'])->view('/verysecretpage', 'verysecretpage') -->name('verysecretpage'); + +Route::middleware(['auth', 'password.confirm'])->group(function () { + Route::view('/verysecretpage', 'verysecretpage')->name('verysecretpage'); +}); require __DIR__.'/auth.php';