Last active
July 7, 2024 03:44
-
-
Save Michael-Brooks/fbbba105cd816ef5c016 to your computer and use it in GitHub Desktop.
Laravel Password validation Regex (Contain at least one uppercase/lowercase letters and one number)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Place this with the rest of your rules. | |
* Doesn't need to be in an array as there are no pipes. | |
* Password is required with a minimum of 6 characters | |
* Should have at least 1 lowercase AND 1 uppercase AND 1 number | |
*/ | |
$rules = [ | |
'password' => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/' | |
]; | |
/* | |
* Use this one if you also require at least one symbol. | |
* Needs to be in an array as it contains a pipe symbol. | |
* Password is required with a minimum of 6 characters | |
* Should have at least 1 lowercase AND 1 uppercase AND 1 number AND 1 symbol | |
*/ | |
$rules = [ | |
'password' => [ | |
'required', | |
'min:6', | |
'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/' | |
] | |
]; |
Great ! Easy and crisp 🍡
Adding some more goodies -
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Register custom validators
Validator::extend('current_password', function ($attribute, $value, $parameters, $validator) {
return \Illuminate\Support\Facades\Hash::check($value, auth()->user()->password);
}, "The :attribute field does not match with your current password.");
Validator::extend('strong_password', function ($attribute, $value, $parameters, $validator) {
// Contain at least one uppercase/lowercase letters, one number and one special char
return preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/', (string)$value);
}, 'Please make a strong password');
}
}
Thanks
How to apply this validation to ResetPassword also?
How to apply this validation to ResetPassword also?
You can override the rules trait by doing something like
protected function rules()
{
return [
'token' => 'required',
'email' => 'required|email',
'password' => [
'required',
'min:6',
'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/'
],
];
}
And placing that inside /app/Http/Controllers/Auth/ResetPasswordController.php
How to apply this validation to ResetPassword also?
You can override the rules trait by doing something like
protected function rules() { return [ 'token' => 'required', 'email' => 'required|email', 'password' => [ 'required', 'min:6', 'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/' ], ]; }
And placing that inside
/app/Http/Controllers/Auth/ResetPasswordController.php
Awesome! Worked perfectly here, thank you very much Michael!
very usefull one..
only capital latter with a integer and not allowed special characters because i am used for promo codes.
what about adding custom error messages on laravel 9 and 10 about new rule?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks.