From 594ef70efa15e2e158b50fb4133335dc75345e2b Mon Sep 17 00:00:00 2001 From: Pathologic Date: Sun, 1 May 2022 13:47:33 +0300 Subject: [PATCH] fix https://github.com/evocms-community/evolution/issues/28 --- src/Services/Users/UserEdit.php | 42 +++++++++++++----------- src/Services/Users/UserRegistration.php | 43 +++++++++++++------------ 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/src/Services/Users/UserEdit.php b/src/Services/Users/UserEdit.php index c0a525c..d5d05ed 100644 --- a/src/Services/Users/UserEdit.php +++ b/src/Services/Users/UserEdit.php @@ -46,9 +46,9 @@ class UserEdit implements UserServiceInterface /** * UserRegistration constructor. - * @param array $userData - * @param bool $events - * @param bool $cache + * @param array $userData + * @param bool $events + * @param bool $cache */ public function __construct(array $userData, bool $events = true, bool $cache = true) { @@ -66,10 +66,12 @@ public function __construct(array $userData, bool $events = true, bool $cache = public function getValidationRules(): array { return [ - 'id' => ['required'], - 'username' => [Rule::unique('users')->ignore($this->userData['id'])], + 'id' => ['required'], + 'username' => ['filled', Rule::unique('users')->ignore($this->userData['id'])], 'password' => ['min:6', 'confirmed'], - 'email' => [Rule::unique('user_attributes')->ignore($this->userData['id'], 'internalKey')], + 'email' => [ + 'filled', 'email:rfc', Rule::unique('user_attributes')->ignore($this->userData['id'], 'internalKey') + ], ]; } @@ -79,11 +81,12 @@ public function getValidationRules(): array public function getValidationMessages(): array { return [ - 'id.required' => Lang::get("global.required_field", ['field' => 'username']), + 'id.required' => Lang::get("global.required_field", ['field' => 'username']), 'password.confirmed' => Lang::get("global.password_confirmed", ['field' => 'password']), - 'password.min' => Lang::get("global.password_gen_length"), - 'username.unique' => Lang::get('global.username_unique'), - 'email.unique' => Lang::get('global.email_unique'), + 'password.min' => Lang::get("global.password_gen_length"), + 'email.email' => Lang::get("validation.email", ['attribute' => 'email']), + 'username.unique' => Lang::get('global.username_unique'), + 'email.unique' => Lang::get('global.email_unique'), ]; } @@ -100,10 +103,10 @@ public function process(): \Illuminate\Database\Eloquent\Model // invoke OnBeforeUserFormSave event if ($this->events) { - EvolutionCMS()->invokeEvent("OnBeforeUserSave", array( + EvolutionCMS()->invokeEvent("OnBeforeUserSave", [ "mode" => "upd", "user" => &$this->userData, - )); + ]); } if (!$this->validate()) { @@ -121,7 +124,8 @@ public function process(): \Illuminate\Database\Eloquent\Model $this->userData['dob'] = strtotime($this->userData['dob']); } foreach ($this->userData as $attribute => $value) { - if (in_array($attribute, $user->attributes->getFillable()) && $attribute != 'id' && $attribute != 'internalKey' && $attribute != 'role') { + if (in_array($attribute, + $user->attributes->getFillable()) && $attribute != 'id' && $attribute != 'internalKey' && $attribute != 'role') { $user->attributes->{$attribute} = $value; } } @@ -129,14 +133,14 @@ public function process(): \Illuminate\Database\Eloquent\Model // invoke OnWebSaveUser event if ($this->events) { - EvolutionCMS()->invokeEvent("OnUserFormSave", array( - "mode" => "upd", - "userid" => $user->getKey(), - "username" => $user->username, + EvolutionCMS()->invokeEvent("OnUserFormSave", [ + "mode" => "upd", + "userid" => $user->getKey(), + "username" => $user->username, "userpassword" => isset($this->userData['clearPassword']) ? $this->userData['clearPassword'] : '', - "useremail" => $user->attributes->email, + "useremail" => $user->attributes->email, "userfullname" => $user->attributes->fullname - )); + ]); } if ($this->cache) { diff --git a/src/Services/Users/UserRegistration.php b/src/Services/Users/UserRegistration.php index f1a7c86..fa761fd 100644 --- a/src/Services/Users/UserRegistration.php +++ b/src/Services/Users/UserRegistration.php @@ -40,9 +40,9 @@ class UserRegistration implements UserServiceInterface /** * UserRegistration constructor. - * @param array $userData - * @param bool $events - * @param bool $cache + * @param array $userData + * @param bool $events + * @param bool $cache */ public function __construct(array $userData, bool $events = true, bool $cache = true) { @@ -61,7 +61,7 @@ public function getValidationRules(): array return [ 'username' => ['required', 'unique:users'], 'password' => ['required', 'min:6', 'confirmed'], - 'email' => ['required', 'email', 'unique:user_attributes'], + 'email' => ['required', 'email:rfc', 'unique:user_attributes'], ]; } @@ -71,13 +71,14 @@ public function getValidationRules(): array public function getValidationMessages(): array { return [ - 'username.required' => Lang::get("global.required_field", ['field' => 'username']), - 'password.required' => Lang::get("global.required_field", ['field' => 'password']), + 'username.required' => Lang::get("global.required_field", ['field' => 'username']), + 'password.required' => Lang::get("global.required_field", ['field' => 'password']), 'password.confirmed' => Lang::get("global.password_confirmed", ['field' => 'password']), - 'email.required' => Lang::get("global.required_field", ['field' => 'email']), - 'password.min' => Lang::get("global.password_gen_length"), - 'username.unique' => Lang::get('global.username_unique'), - 'email.unique' => Lang::get('global.email_unique'), + 'email.required' => Lang::get("global.required_field", ['field' => 'email']), + 'email.email' => Lang::get("validation.email", ['attribute' => 'email']), + 'password.min' => Lang::get("global.password_gen_length"), + 'username.unique' => Lang::get('global.username_unique'), + 'email.unique' => Lang::get('global.email_unique'), ]; } @@ -94,10 +95,10 @@ public function process(): \Illuminate\Database\Eloquent\Model // invoke OnBeforeUserFormSave event if ($this->events) { - EvolutionCMS()->invokeEvent("OnBeforeUserSave", array( + EvolutionCMS()->invokeEvent("OnBeforeUserSave", [ "mode" => "new", "user" => &$this->userData, - )); + ]); } if (!$this->validate()) { @@ -110,7 +111,9 @@ public function process(): \Illuminate\Database\Eloquent\Model $this->userData['clearPassword'] = $this->userData['password']; $this->userData['password'] = EvolutionCMS()->getPasswordHash()->HashPassword($this->userData['password']); if (isset($this->userData['dob'])) { - if (!is_numeric($this->userData['dob'])) $this->userData['dob'] = null; + if (!is_numeric($this->userData['dob'])) { + $this->userData['dob'] = null; + } } $user = User::create($this->userData); @@ -119,14 +122,14 @@ public function process(): \Illuminate\Database\Eloquent\Model // invoke OnWebSaveUser event if ($this->events) { - EvolutionCMS()->invokeEvent("OnUserFormSave", array( - "mode" => "new", - "userid" => $user->getKey(), - "username" => $user->username, + EvolutionCMS()->invokeEvent("OnUserFormSave", [ + "mode" => "new", + "userid" => $user->getKey(), + "username" => $user->username, "userpassword" => $this->userData['clearPassword'], - "useremail" => $user->attributes->email, + "useremail" => $user->attributes->email, "userfullname" => $user->attributes->fullname - )); + ]); } if ($this->cache) { @@ -149,7 +152,7 @@ public function checkRules(): bool */ public function validate(): bool { - $validator = \Validator::make($this->userData, $this->validate, $this->messages); + $validator = \Validator::validate($this->userData, $this->validate, $this->messages); $this->validateErrors = $validator->errors()->toArray(); return !$validator->fails(); }