Skip to content

Commit

Permalink
Auth-Basics-Solution
Browse files Browse the repository at this point in the history
  • Loading branch information
Seddek-Nadhem committed Sep 9, 2024
1 parent f0cc8fb commit 5ad36c0
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 10 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
13 changes: 13 additions & 0 deletions app/Http/Controllers/ProfileController.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,19 @@ public function update(ProfileUpdateRequest $request)
// Task: fill in the code here to update name and email
// Also, update the password if it is set

$user = Auth::user();

$user->name = $request->name;
$user->email = $request->email;

if ($request->filled('password')) {
$user->password = Hash::make($request->password);
}

$user->save();



return redirect()->route('profile.show')->with('success', 'Profile updated.');
}
}
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
12 changes: 6 additions & 6 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@
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')
->name('secretpage');
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')
->name('verysecretpage');
Route::view('/verysecretpage', 'verysecretpage')->middleware('auth.password.confirm')->name('verysecretpage');

require __DIR__.'/auth.php';

0 comments on commit 5ad36c0

Please sign in to comment.