Created
December 2, 2021 14:04
-
-
Save EduardoSP6/13ff5c8d21e50e646612296fdf128d22 to your computer and use it in GitHub Desktop.
Custom password validation laravel 7
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
Custom password validation laravel 7: | |
For create a custom password rule for laravel you should run a command: php artisan make:rule PasswordRule. | |
The class will be created in App\Rules folder. Example: | |
<?php | |
namespace App\Rules; | |
use Illuminate\Contracts\Validation\Rule; | |
class PasswordRule implements Rule | |
{ | |
/** | |
* Create a new rule instance. | |
* | |
* @return void | |
*/ | |
public function __construct() | |
{ | |
// | |
} | |
/** | |
* Determine if the validation rule passes. | |
* | |
* @param string $attribute | |
* @param mixed $value | |
* @return bool | |
*/ | |
public function passes($attribute, $value) | |
{ | |
return strlen($value) >= 8 | |
&& preg_match('/[a-z]/', $value) == 1 | |
&& preg_match('/[A-Z]/', $value) == 1 | |
&& preg_match('/[0-9]/', $value) == 1 | |
&& preg_match('/[&"%$#@+-]/', $value) == 1; | |
} | |
/** | |
* Get the validation error message. | |
* | |
* @return string | |
*/ | |
public function message() | |
{ | |
return 'The password field must contain at least 8 characters, 1 uppercase letter, 1 lowercase letter '. | |
'and one of the symbols &"%$#@+-'; | |
} | |
} | |
Now you can implement this rule in request validator of your user CRUD. For example: | |
<?php | |
namespace App\Http\Requests; | |
use App\Rules\PasswordRule; | |
use Illuminate\Foundation\Http\FormRequest; | |
class UserRequest extends FormRequest | |
{ | |
public function authorize() | |
{ | |
return true; | |
} | |
public function rules() { | |
switch ($this->method()) { | |
case 'POST': { | |
return [ | |
'name' => 'required|string', | |
'email' => 'required|email|unique:users', | |
'password' => ['required', 'string', new PasswordRule()], | |
]; | |
} | |
} | |
} | |
} | |
Or using Validator class: | |
$data = $request->all(); | |
$validator = Validator::make($data, [ | |
'password' => [ | |
'required', | |
'string', | |
new PasswordRule() | |
] | |
]); | |
Including you can implement in ResetPasswordController for validation in rules method. Example: | |
class ResetPasswordController extends Controller { | |
/** | |
* Get the password reset validation rules. | |
* | |
* @return array | |
*/ | |
protected function rules() | |
{ | |
return [ | |
'token' => 'required', | |
'email' => 'required|email', | |
'password' => ['required', 'confirmed', new PasswordRule()], | |
]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment