Bird
Raised Fist0
Laravelframework~20 mins

Password reset in Laravel - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Password Reset Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
1:30remaining
What happens after submitting a valid password reset request in Laravel?

In Laravel's built-in password reset system, when a user submits their email to request a password reset link, what is the expected behavior?

ALaravel sends an email with a reset link and shows a success message on the same page.
BLaravel redirects the user to the login page without sending any email.
CLaravel immediately resets the password to a default value and logs the user in.
DLaravel deletes the user account and shows an error message.
Attempts:
2 left
💡 Hint

Think about what a password reset link is for.

📝 Syntax
intermediate
1:30remaining
Which code snippet correctly defines the password reset route in Laravel?

Laravel uses routes to handle password reset requests. Which of the following route definitions correctly sets up the password reset POST route?

ARoute::post('/reset-password', 'PasswordResetController@reset')->name('password.update');
BRoute::put('/reset-password', [PasswordResetController::class, 'reset'])->name('password.update');
CRoute::get('/reset-password', [PasswordResetController::class, 'reset'])->name('password.update');
DRoute::post('/reset-password', [PasswordResetController::class, 'reset'])->name('password.update');
Attempts:
2 left
💡 Hint

Consider the HTTP method used for submitting form data securely.

🔧 Debug
advanced
2:00remaining
Why does the password reset token expire immediately after generation?

Consider this Laravel password reset token generation snippet:

$token = Password::createToken($user);

But when trying to use the token, it is always expired. What is the most likely cause?

AThe token is generated with the wrong user ID.
BThe token is generated but never saved to the database.
CThe token expiration time is set to zero or a past time in the config/auth.php file.
DThe user model does not implement the MustVerifyEmail interface.
Attempts:
2 left
💡 Hint

Check the configuration that controls token lifetime.

❓ state_output
advanced
1:30remaining
What is the value of $status after a successful password reset?

Given this Laravel code snippet:

$status = Password::reset($credentials, function ($user, $password) {
    $user->forceFill(['password' => Hash::make($password)])->save();
    $user->setRememberToken(Str::random(60));
});

What will be the value of $status if the reset succeeds?

Atrue
BPassword::PASSWORD_RESET
Cnull
DPassword::RESET_SUCCESS
Attempts:
2 left
💡 Hint

Look for constants defined in the Password facade.

🧠 Conceptual
expert
2:30remaining
Why should password reset tokens be single-use and time-limited?

In Laravel's password reset system, tokens are designed to be used only once and expire after a short time. Why is this important?

ATo prevent attackers from reusing stolen tokens and to limit the window for attacks.
BTo reduce database storage by deleting tokens quickly.
CTo force users to reset passwords frequently for better security.
DTo allow multiple users to share the same reset link safely.
Attempts:
2 left
💡 Hint

Think about security risks of token reuse and long validity.

Practice

(1/5)
1. What is the main purpose of Laravel's password reset feature?
easy
A. To update the user's profile picture
B. To change the user's email address
C. To delete the user's account permanently
D. To allow users to safely recover access to their accounts

Solution

  1. Step 1: Understand password reset functionality

    Password reset is designed to help users regain access if they forget their password.
  2. Step 2: Identify the correct purpose in options

    Only To allow users to safely recover access to their accounts describes recovering account access safely, which matches password reset.
  3. Final Answer:

    To allow users to safely recover access to their accounts -> Option D
  4. Quick Check:

    Password reset = recover access [OK]
Hint: Password reset helps regain account access safely [OK]
Common Mistakes:
  • Confusing password reset with profile updates
  • Thinking it deletes the account
  • Assuming it changes email address
2. Which Laravel command publishes the password reset email template for customization?
easy
A. php artisan vendor:publish --tag=laravel-password-reset
B. php artisan make:auth
C. php artisan vendor:publish --tag=laravel-mail
D. php artisan migrate

Solution

  1. Step 1: Identify command to publish email templates

    Laravel uses vendor:publish with specific tags to publish resources like email templates.
  2. Step 2: Match the correct tag for mail templates

    The tag 'laravel-mail' is used to publish mail templates including password reset emails.
  3. Final Answer:

    php artisan vendor:publish --tag=laravel-mail -> Option C
  4. Quick Check:

    Publish mail templates = vendor:publish --tag=laravel-mail [OK]
Hint: Use vendor:publish with mail tag to customize emails [OK]
Common Mistakes:
  • Using make:auth which is deprecated
  • Wrong tag like laravel-password-reset
  • Running migrate instead of publishing
3. Given this Laravel password reset route snippet, what HTTP method should the form use to submit the reset token and new password?
<form action="{{ route('password.update') }}" method="?">
  @csrf
  <input type="hidden" name="token" value="{{ $token }}">
  <input type="email" name="email" required>
  <input type="password" name="password" required>
  <input type="password" name="password_confirmation" required>
  <button type="submit">Reset Password</button>
</form>
medium
A. GET
B. POST
C. PUT
D. DELETE

Solution

  1. Step 1: Understand password reset form submission

    The form sends sensitive data (password, token) to update the password securely.
  2. Step 2: Identify correct HTTP method for secure data submission

    POST method is used to send data to the server for processing, especially for updates like password reset.
  3. Final Answer:

    POST -> Option B
  4. Quick Check:

    Form sending data securely = POST [OK]
Hint: Use POST to send password reset data securely [OK]
Common Mistakes:
  • Using GET which exposes data in URL
  • Using PUT or DELETE which are not default form methods
  • Omitting CSRF token with POST
4. You wrote this code to send a password reset link but users report no emails received:
use Illuminate\Support\Facades\Password;

Password::sendResetLink(['email' => $request->email]);

What is the likely mistake?
medium
A. Missing the return statement to check success
B. Using the wrong facade, should use Mail instead
C. Not validating the email before sending reset link
D. Not calling the notify() method on the user model

Solution

  1. Step 1: Understand Password::sendResetLink usage

    This method returns a status indicating if the email was sent successfully or failed.
  2. Step 2: Identify missing check for success

    Without capturing and checking the return value, you won't know if sending failed silently.
  3. Final Answer:

    Missing the return statement to check success -> Option A
  4. Quick Check:

    Check sendResetLink return to confirm email sent [OK]
Hint: Always check sendResetLink return status for success [OK]
Common Mistakes:
  • Assuming Mail facade is needed directly
  • Skipping email validation before sending
  • Trying to call notify() manually for reset link
5. You want to customize Laravel's password reset to expire tokens after 30 minutes instead of the default. Which file and setting should you modify?
hard
A. config/auth.php, 'passwords.users.expire' => 30
B. config/mail.php, 'reset_token_expiry' => 30
C. routes/web.php, add middleware for token expiry
D. app/Http/Controllers/ResetPasswordController.php, set token expiry property

Solution

  1. Step 1: Identify where password reset token expiry is configured

    Laravel stores password reset settings in config/auth.php under 'passwords' array.
  2. Step 2: Locate the 'expire' key for users password broker

    The 'expire' key defines token validity in minutes; changing it to 30 sets expiry to 30 minutes.
  3. Final Answer:

    config/auth.php, 'passwords.users.expire' => 30 -> Option A
  4. Quick Check:

    Token expiry set in config/auth.php passwords.users.expire [OK]
Hint: Change expire in config/auth.php under passwords.users [OK]
Common Mistakes:
  • Trying to set expiry in mail config
  • Adding middleware instead of config change
  • Modifying controller instead of config
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard