From 26c0c9ecedd4e0d7ce495aebd2c42c1d32032b6b Mon Sep 17 00:00:00 2001 From: Obinna Elvis Okechukwu Date: Sun, 7 Jan 2024 22:36:33 +0100 Subject: [PATCH 1/3] fix rule unique issue and logout user on email change --- src/Http/Controllers/Users.php | 5 +++++ src/Requests/UserRequest.php | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Http/Controllers/Users.php b/src/Http/Controllers/Users.php index d2c30ce..3a04c2a 100644 --- a/src/Http/Controllers/Users.php +++ b/src/Http/Controllers/Users.php @@ -90,6 +90,11 @@ public function account_onSave() $usernameChanged = $this->currentUser->username != post('User[username]'); $passwordChanged = strlen(post('User[password]')); $languageChanged = $this->currentUser->language != post('User[language_id]'); + $emailChanged = $this->currentUser->email != post('User[email]'); + if ($emailChanged) { + AdminAuth::logout(); + return redirect('/admin/login'); + } if ($usernameChanged || $passwordChanged || $languageChanged) { $this->currentUser->reload()->reloadRelations(); AdminAuth::login($this->currentUser, true); diff --git a/src/Requests/UserRequest.php b/src/Requests/UserRequest.php index b5da2f3..083eac8 100644 --- a/src/Requests/UserRequest.php +++ b/src/Requests/UserRequest.php @@ -3,6 +3,7 @@ namespace Igniter\User\Requests; use Igniter\System\Classes\FormRequest; +use Igniter\User\Facades\AdminAuth; use Illuminate\Validation\Rule; class UserRequest extends FormRequest @@ -30,10 +31,10 @@ public function rules() return [ 'name' => ['required', 'string', 'between:2,255'], 'email' => ['required', 'max:96', 'email:filter', - Rule::unique('admin_users')->ignore($this->getRecordId(), 'user_id'), + Rule::unique('admin_users')->ignore(AdminAuth::id(), 'user_id'), ], 'username' => ['required', 'alpha_dash', 'between:2,32', - Rule::unique('admin_users')->ignore($this->getRecordId(), 'user_id'), + Rule::unique('admin_users')->ignore(AdminAuth::id(), 'user_id'), ], 'password' => ['sometimes', 'required_if:send_invite,0', 'string', 'between:6,32', 'same:password_confirm'], 'status' => ['boolean'], From c8ea8ef12829762b27747afd8554a4137444e5c1 Mon Sep 17 00:00:00 2001 From: Obinna Elvis Okechukwu Date: Mon, 8 Jan 2024 23:18:48 +0100 Subject: [PATCH 2/3] some changes --- src/Http/Controllers/Users.php | 6 +++--- src/Requests/UserRequest.php | 11 +++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Http/Controllers/Users.php b/src/Http/Controllers/Users.php index 3a04c2a..bc78fd7 100644 --- a/src/Http/Controllers/Users.php +++ b/src/Http/Controllers/Users.php @@ -91,11 +91,11 @@ public function account_onSave() $passwordChanged = strlen(post('User[password]')); $languageChanged = $this->currentUser->language != post('User[language_id]'); $emailChanged = $this->currentUser->email != post('User[email]'); - if ($emailChanged) { + if ($emailChanged || $passwordChanged) { AdminAuth::logout(); - return redirect('/admin/login'); + return redirect('/logout'); } - if ($usernameChanged || $passwordChanged || $languageChanged) { + if ($usernameChanged || $languageChanged) { $this->currentUser->reload()->reloadRelations(); AdminAuth::login($this->currentUser, true); } diff --git a/src/Requests/UserRequest.php b/src/Requests/UserRequest.php index 083eac8..26dc34f 100644 --- a/src/Requests/UserRequest.php +++ b/src/Requests/UserRequest.php @@ -8,6 +8,13 @@ class UserRequest extends FormRequest { + + protected function getRecordId() + { + $slugName = ($slug = $this->route('slug')) + ? str_after($slug, '/') : null; + return $slugName == 'account' ? AdminAuth::id() : $slugName; + } public function attributes() { return [ @@ -31,10 +38,10 @@ public function rules() return [ 'name' => ['required', 'string', 'between:2,255'], 'email' => ['required', 'max:96', 'email:filter', - Rule::unique('admin_users')->ignore(AdminAuth::id(), 'user_id'), + Rule::unique('admin_users')->ignore($this->getRecordId(), 'user_id'), ], 'username' => ['required', 'alpha_dash', 'between:2,32', - Rule::unique('admin_users')->ignore(AdminAuth::id(), 'user_id'), + Rule::unique('admin_users')->ignore($this->getRecordId(), 'user_id'), ], 'password' => ['sometimes', 'required_if:send_invite,0', 'string', 'between:6,32', 'same:password_confirm'], 'status' => ['boolean'], From 51e079001f829422f594d9f8bef5a0845c9dca69 Mon Sep 17 00:00:00 2001 From: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> Date: Sun, 14 Jan 2024 12:03:03 +0000 Subject: [PATCH 3/3] refactor Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> --- src/Http/Controllers/Users.php | 3 ++- src/Requests/UserRequest.php | 15 ++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Http/Controllers/Users.php b/src/Http/Controllers/Users.php index dade66b..c4cf1dc 100644 --- a/src/Http/Controllers/Users.php +++ b/src/Http/Controllers/Users.php @@ -50,7 +50,7 @@ class Users extends \Igniter\Admin\Classes\AdminController 'configFile' => 'user', ]; - public $locationConfig = [ + public array $locationConfig = [ 'addAbsenceConstraint' => false, ]; @@ -95,6 +95,7 @@ public function account_onSave() AdminAuth::logout(); return redirect('/logout'); } + if ($usernameChanged || $languageChanged) { $this->currentUser->reload()->reloadRelations(); AdminAuth::login($this->currentUser, true); diff --git a/src/Requests/UserRequest.php b/src/Requests/UserRequest.php index 26dc34f..bf3f820 100644 --- a/src/Requests/UserRequest.php +++ b/src/Requests/UserRequest.php @@ -8,13 +8,6 @@ class UserRequest extends FormRequest { - - protected function getRecordId() - { - $slugName = ($slug = $this->route('slug')) - ? str_after($slug, '/') : null; - return $slugName == 'account' ? AdminAuth::id() : $slugName; - } public function attributes() { return [ @@ -54,4 +47,12 @@ public function rules() 'locations.*' => ['integer'], ]; } + + protected function getRecordId(): string + { + $slugName = ($slug = $this->route('slug')) + ? str_after($slug, '/') : null; + + return $slugName == 'account' ? AdminAuth::id() : $slugName; + } }