Skip to content

Commit

Permalink
My Solution
Browse files Browse the repository at this point in the history
  • Loading branch information
AymaneOnline committed Sep 19, 2024
1 parent f0cc8fb commit 4782766
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 6 deletions.
2 changes: 1 addition & 1 deletion app/Http/Controllers/Auth/RegisteredUserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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([
Expand Down
17 changes: 17 additions & 0 deletions app/Http/Controllers/ProfileController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
namespace App\Http\Controllers;

use App\Http\Requests\ProfileUpdateRequest;
use Illuminate\Support\Facades\Hash;


class ProfileController extends Controller
{
Expand All @@ -15,6 +17,21 @@ 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 currently authenticated user
$user = auth()->user();

// Update the name and email
$user->name = $request->input('name');
$user->email = $request->input('email');

// Check if a password is set, and update it if so
if ($request->filled('password')) {
$user->password = Hash::make($request->input('password'));
}

// Save the changes to the user
$user->save();

return redirect()->route('profile.show')->with('success', 'Profile updated.');
}
Expand Down
2 changes: 1 addition & 1 deletion app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions resources/views/auth/profile.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
class="block mt-1 w-full"
type="text"
name="name"
value="???"
value="{{ auth()->user()->name }}"
required />
</div>

Expand All @@ -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 />
</div>

Expand Down
2 changes: 2 additions & 0 deletions resources/views/layouts/navigation.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
{{ __('Users') }}
</x-nav-link>
{{-- Task: this "Profile" link should be visible only to logged-in users --}}
@auth
<x-nav-link href="/profile" :active="request()->routeIs('profile.show')">
{{ __('Profile') }}
</x-nav-link>
@endauth
</div>
</div>

Expand Down
9 changes: 7 additions & 2 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,22 @@
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
Route::view('/secretpage', 'secretpage')
->middleware(['verified'])
->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')
->middleware(['password.confirm'])
->name('verysecretpage');

require __DIR__.'/auth.php';

0 comments on commit 4782766

Please sign in to comment.