DEV Community

Ostap Brehin
Ostap Brehin

Posted on Edited on

Fortify: How to disable password confirmation field (Jetstream)

Jetstream

Solution

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

use Illuminate\Validation\Rules\Password;

// ...

protected function passwordRules()
{
    return ['required', 'string', Password::default()];
}
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', Password::default(), '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 •

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

Collapse
 
ostap profile image
Ostap Brehin •

Glad you liked it!

Collapse
 
neskodi profile image
Sergio Neskodi •

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