A new Password Rule object from Laravel 8.39

In previous versions, to define a custom validation rule, you must to implement the Illuminate\Contracts\Validation\Rule interface or use a Closure.

As below code, a custom rule StrongPassword like so.

namespace App\Rules;

use Illuminate\Contracts…


This content originally appeared on DEV Community and was authored by TRUNG VU

In previous versions, to define a custom validation rule, you must to implement the Illuminate\Contracts\Validation\Rule interface or use a Closure.

As below code, a custom rule StrongPassword like so.

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class StrongPassword implements Rule
{
    public function passes($attribute, $value)
    {
        return preg_match("/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@()$%^&*=_{}[\]:;\"'|\\<>,.\/~`±§+-]).{12,30}$/", $value);
    }

    public function message()
    {
        return 'The :attribute must be 12–30 characters, and include a number, a symbol, a lower and a upper case letter';
    }
}

And use it in your controller or request validation.

namespace App\Http\Requests;

use App\Rules\StrongPassword;
use Illuminate\Foundation\Http\FormRequest;

class AccountRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'password' => [
                'required',
                'confirmed',
                new StrongPassword(),
            ],
        ];
    }
}

From version 8.39, Nuno Maduro created a new Password Rule object in this framework with below methods:

min(): Makes minimum size of the password.
mixedCase(): Makes the password require at least one uppercase and one lowercase letter.
letters(): Makes the password require at least one letter.
numbers(): Makes the password require at least one number.
symbols(): Makes the password require at least one symbol.
uncompromised(): Ensures the password has not been compromised by checking the password against a verification API to see if the password appears in data leaks.

$request->validate([
    'password' =>  ['required', 'confirmed', Password::min(8)->mixedCase()],
    'password' =>  ['required', 'confirmed', Password::min(8)->letters()],
    'password' =>  ['required', 'confirmed', Password::min(8)->numbers()],
    'password' =>  ['required', 'confirmed', Password::min(8)->symbols()],
    'password' =>  ['required', 'confirmed', Password::min(8)->uncompromised()],
]);

Or you can use them all combined like so.

$request->validate([
    'password' => ['required', 'confirmed', Password::min(8)
            ->mixedCase()
            ->letters()
            ->numbers()
            ->symbols()
            ->uncompromised(),
    ],
]);

Thanks Nuno Maduro.

Reference: https://github.com/laravel/framework/pull/36960


This content originally appeared on DEV Community and was authored by TRUNG VU


Print Share Comment Cite Upload Translate Updates
APA

TRUNG VU | Sciencx (2021-05-14T03:38:42+00:00) A new Password Rule object from Laravel 8.39. Retrieved from https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/

MLA
" » A new Password Rule object from Laravel 8.39." TRUNG VU | Sciencx - Friday May 14, 2021, https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/
HARVARD
TRUNG VU | Sciencx Friday May 14, 2021 » A new Password Rule object from Laravel 8.39., viewed ,<https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/>
VANCOUVER
TRUNG VU | Sciencx - » A new Password Rule object from Laravel 8.39. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/
CHICAGO
" » A new Password Rule object from Laravel 8.39." TRUNG VU | Sciencx - Accessed . https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/
IEEE
" » A new Password Rule object from Laravel 8.39." TRUNG VU | Sciencx [Online]. Available: https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/. [Accessed: ]
rf:citation
» A new Password Rule object from Laravel 8.39 | TRUNG VU | Sciencx | https://www.scien.cx/2021/05/14/a-new-password-rule-object-from-laravel-8-39/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.