From 06ff32e072b488a45e6234ca7dec9942eb72e758 Mon Sep 17 00:00:00 2001 From: Obinna Elvis Okechukwu Date: Tue, 6 Feb 2024 00:09:43 +0100 Subject: [PATCH] fix rule unique issue and logout user on email change (#19) * fix rule unique issue and logout user on email change * some changes * refactor Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> --------- Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> Co-authored-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> --- src/Http/Controllers/Users.php | 10 ++++++++-- src/Requests/UserRequest.php | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Http/Controllers/Users.php b/src/Http/Controllers/Users.php index c3f4997..842549f 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, ]; @@ -90,7 +90,13 @@ public function account_onSave() $usernameChanged = $this->currentUser->username != post('User[username]'); $passwordChanged = strlen(post('User[password]')); $languageChanged = $this->currentUser->language != post('User[language_id]'); - if ($usernameChanged || $passwordChanged || $languageChanged) { + $emailChanged = $this->currentUser->email != post('User[email]'); + if ($emailChanged || $passwordChanged) { + 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 b5da2f3..bf3f820 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 @@ -46,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; + } }