From fae8c05e7147bc4bbbf7064406d1223cc3ef6692 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 17 Jul 2021 17:26:12 +0200 Subject: [PATCH] Fix events for LDAP --- app/Handlers/Events/LDAPEventHandler.php | 6 ++---- app/Handlers/Events/UserEventHandler.php | 18 +++++++++++++++--- app/Support/Preferences.php | 7 ++++++- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/Handlers/Events/LDAPEventHandler.php b/app/Handlers/Events/LDAPEventHandler.php index fe6fadd0f1..ab8fa15e3d 100644 --- a/app/Handlers/Events/LDAPEventHandler.php +++ b/app/Handlers/Events/LDAPEventHandler.php @@ -38,20 +38,18 @@ class LDAPEventHandler */ public function importedUser(Imported $event) { + Log::debug(sprintf('Now in %s', __METHOD__)); /** @var User $user */ $user = $event->eloquent; $alternative = User::where('email', $user->email)->where('id', '!=', $user->id)->first(); if (null !== $alternative) { - // already a user exists with these records. - // copy objectguid and domain - // then logout + Log::debug(sprintf('User #%d is created but user #%d already exists.', $user->id, $alternative->id)); $alternative->objectguid = $user->objectguid; $alternative->domain = $user->domain; $alternative->save(); $user->delete(); auth()->logout(); } - Log::debug('HERE WE ARE'); } } diff --git a/app/Handlers/Events/UserEventHandler.php b/app/Handlers/Events/UserEventHandler.php index 5187c4099b..2c5faa42a8 100644 --- a/app/Handlers/Events/UserEventHandler.php +++ b/app/Handlers/Events/UserEventHandler.php @@ -29,6 +29,7 @@ use FireflyIII\Events\DetectedNewIPAddress; use FireflyIII\Events\RegisteredUser; use FireflyIII\Events\RequestedNewPassword; use FireflyIII\Events\UserChangedEmail; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Mail\ConfirmEmailChangeMail; use FireflyIII\Mail\NewIPAddressWarningMail; use FireflyIII\Mail\RegisteredUser as RegisteredUserMail; @@ -190,6 +191,7 @@ class UserEventHandler } catch (Exception $e) { // @phpstan-ignore-line Log::error($e->getMessage()); } + return true; } @@ -216,6 +218,7 @@ class UserEventHandler } catch (Exception $e) { // @phpstan-ignore-line Log::error($e->getMessage()); } + return true; } @@ -241,6 +244,7 @@ class UserEventHandler } catch (Exception $e) { // @phpstan-ignore-line Log::error($e->getMessage()); } + return true; } @@ -283,6 +287,7 @@ class UserEventHandler /** * @param Login $event + * * @throws \FireflyIII\Exceptions\FireflyException */ public function storeUserIPAddress(Login $event): void @@ -290,9 +295,16 @@ class UserEventHandler /** @var User $user */ $user = $event->user; /** @var array $preference */ - $preference = app('preferences')->getForUser($user, 'login_ip_history', [])->data; - $inArray = false; - $ip = request()->ip(); + try { + $preference = app('preferences')->getForUser($user, 'login_ip_history', [])->data; + } catch (FireflyException $e) { + // don't care. + Log::error($e->getMessage()); + + return; + } + $inArray = false; + $ip = request()->ip(); Log::debug(sprintf('User logging in from IP address %s', $ip)); // update array if in array diff --git a/app/Support/Preferences.php b/app/Support/Preferences.php index 9262a0fc88..dabd433bd7 100644 --- a/app/Support/Preferences.php +++ b/app/Support/Preferences.php @@ -29,6 +29,7 @@ use FireflyIII\Models\Preference; use FireflyIII\User; use Illuminate\Support\Collection; use Log; +use PDOException; use Session; /** @@ -297,7 +298,11 @@ class Preferences $pref->name = $name; } $pref->data = $value; - $pref->save(); + try { + $pref->save(); + } catch(PDOException $e) { + throw new FireflyException(sprintf('Could not save preference: %s', $e->getMessage()), 0, $e); + } Cache::forever($fullName, $pref); return $pref;