DEV Community

Ostap Brehin
Ostap Brehin

Posted on • Updated on

Fortify: How to disable password confirmation field (Jetstream)

Jetstream "register" page screenshot

Solution

Add this method to app/Actions/Fortify/CreateNewUser.php file.

use Laravel\Fortify\Rules\Password;

// ...

protected function passwordRules()
{
    return ['required', 'string', new Password];
}
Enter fullscreen mode Exit fullscreen mode

If you are using Jetstream, you should also remove these line in resources/views/auth/register.blade.php

<div class="mt-4">
    <x-jet-label for="password_confirmation" value="{{ __('Confirm Password') }}" />
    <x-jet-input id="password_confirmation" class="block mt-1 w-full" type="password" name="password_confirmation" required autocomplete="new-password" />
</div>
Enter fullscreen mode Exit fullscreen mode

Explanation

Fortify has an action class which is responsible for user creation.
You can find it at app/Actions/Fortify/CreateNewUser.php.

You can see the line:

'password' => $this->passwordRules(),
Enter fullscreen mode Exit fullscreen mode

Under hood it uses passwordRules method from PasswordValidationRules trait. That method returns array with confirmed element:

return ['required', 'string', new Password, 'confirmed'];
Enter fullscreen mode Exit fullscreen mode

confirmed is a rule responsible for email confirmation, so we made our own passwordRules method which doesn't has confirmed rule.

Top comments (3)

Collapse
 
neskodi profile image
Sergio Neskodi

Also probably worth mentioning that you have to import Laravel\Fortify\Rules\Password; into your Action.

Collapse
 
neskodi profile image
Sergio Neskodi

Thank you for taking time to put this out. This was useful.

Collapse
 
ostap profile image
Ostap Brehin

Glad you liked it!