fix password validation - issue #13
This commit is contained in:
parent
d362359509
commit
189a114511
4 changed files with 62 additions and 23 deletions
|
|
@ -5,6 +5,7 @@ namespace App\Http\Requests\Bo\AppUser;
|
|||
use App\Enums\AppUserRolesEnum;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Kwaadpepper\Enum\Rules\EnumIsValidRule;
|
||||
use Illuminate\Validation\Rules\Password;
|
||||
|
||||
class StoreAppUserRequest extends FormRequest
|
||||
{
|
||||
|
|
@ -42,7 +43,14 @@ class StoreAppUserRequest extends FormRequest
|
|||
'lastname' => 'required|min:3|max:255',
|
||||
'firstname' => 'required|min:3|max:255',
|
||||
'email' => 'required|min:3|max:255|email:rfc,dns|unique:app_users,email',
|
||||
'password' => 'required|nullable|required_with:password_confirmation|confirmed|min:8|max:255',
|
||||
'password' => [
|
||||
'required', 'required_with:password_confirmation', 'confirmed', 'max:255',
|
||||
Password::min(8)
|
||||
->letters()
|
||||
->mixedCase()
|
||||
->numbers()
|
||||
->symbols()
|
||||
],
|
||||
'authorizedFolders' => 'present|array',
|
||||
'role' => [
|
||||
'required',
|
||||
|
|
|
|||
|
|
@ -2,9 +2,8 @@
|
|||
|
||||
namespace App\Http\Requests\Bo\AppUser;
|
||||
|
||||
use App\Enums\AppUserRolesEnum;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Kwaadpepper\Enum\Rules\EnumIsValidRule;
|
||||
use Illuminate\Validation\Rules\Password;
|
||||
|
||||
class UpdateAppUserRequest extends StoreAppUserRequest
|
||||
{
|
||||
|
|
@ -15,9 +14,7 @@ class UpdateAppUserRequest extends StoreAppUserRequest
|
|||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'lastname' => 'required|min:3|max:255',
|
||||
'firstname' => 'required|min:3|max:255',
|
||||
$rules = [
|
||||
'email' => [
|
||||
'required',
|
||||
'min:3',
|
||||
|
|
@ -25,12 +22,15 @@ class UpdateAppUserRequest extends StoreAppUserRequest
|
|||
'email:rfc,dns',
|
||||
Rule::unique('app_users', 'email')->ignore($this->route('app_user')->id),
|
||||
],
|
||||
'password' => 'sometimes|nullable|required_with:password_confirmation|confirmed|min:8|max:255',
|
||||
'role' => [
|
||||
'required',
|
||||
new EnumIsValidRule(AppUserRolesEnum::class)
|
||||
'password' => [
|
||||
'sometimes', 'nullable', 'required_with:password_confirmation', 'confirmed', 'max:255',
|
||||
Password::min(8)
|
||||
->letters()
|
||||
->mixedCase()
|
||||
->numbers()
|
||||
->symbols()
|
||||
],
|
||||
'status' => 'sometimes'
|
||||
];
|
||||
return array_merge(parent::rules(), $rules);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,15 @@ class AppUser extends Model
|
|||
'order',
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
'password',
|
||||
];
|
||||
|
||||
/**
|
||||
* cast enum
|
||||
* @var string[]
|
||||
|
|
@ -58,17 +67,28 @@ class AppUser extends Model
|
|||
static::creating(function (self $model) {
|
||||
self::assertFieldIsUnique('email', $model->email);
|
||||
self::setOrder($model);
|
||||
$model->password = Hash::make($model->password);
|
||||
static::updatePassword($model);
|
||||
});
|
||||
static::updating(function (self $model) {
|
||||
if (Hash::needsRehash($model->password)) {
|
||||
$model->password = Hash::make($model->password);
|
||||
}
|
||||
static::updatePassword($model);
|
||||
});
|
||||
}
|
||||
|
||||
// * METHODS
|
||||
|
||||
/**
|
||||
* Update password.
|
||||
*
|
||||
* @param self $model
|
||||
* @return void
|
||||
*/
|
||||
private static function updatePassword(self $model): void
|
||||
{
|
||||
if (Hash::needsRehash($model->password)) {
|
||||
$model->password = Hash::make($model->password);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts using validation that the field is unique.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -62,15 +62,26 @@ class User extends Authenticatable
|
|||
protected static function booted()
|
||||
{
|
||||
// * EVENT CLOSURES.
|
||||
static::creating(function (User $user) {
|
||||
if (Hash::needsRehash($user->password)) {
|
||||
$user->password = Hash::make($user->password);
|
||||
}
|
||||
static::creating(function (self $model) {
|
||||
static::updatePassword($model);
|
||||
});
|
||||
static::updating(function (User $user) {
|
||||
if (Hash::needsRehash($user->password)) {
|
||||
$user->password = Hash::make($user->password);
|
||||
}
|
||||
static::updating(function (self $model) {
|
||||
static::updatePassword($model);
|
||||
});
|
||||
}
|
||||
|
||||
// * METHODS
|
||||
|
||||
/**
|
||||
* Update password.
|
||||
*
|
||||
* @param self $model
|
||||
* @return void
|
||||
*/
|
||||
private static function updatePassword(self $model): void
|
||||
{
|
||||
if (Hash::needsRehash($model->password)) {
|
||||
$model->password = Hash::make($model->password);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue