Fix events for LDAP

This commit is contained in:
James Cole
2021-07-17 17:26:12 +02:00
parent 2c943e0d53
commit fae8c05e71
3 changed files with 23 additions and 8 deletions

View File

@@ -38,20 +38,18 @@ class LDAPEventHandler
*/ */
public function importedUser(Imported $event) public function importedUser(Imported $event)
{ {
Log::debug(sprintf('Now in %s', __METHOD__));
/** @var User $user */ /** @var User $user */
$user = $event->eloquent; $user = $event->eloquent;
$alternative = User::where('email', $user->email)->where('id', '!=', $user->id)->first(); $alternative = User::where('email', $user->email)->where('id', '!=', $user->id)->first();
if (null !== $alternative) { if (null !== $alternative) {
// already a user exists with these records. Log::debug(sprintf('User #%d is created but user #%d already exists.', $user->id, $alternative->id));
// copy objectguid and domain
// then logout
$alternative->objectguid = $user->objectguid; $alternative->objectguid = $user->objectguid;
$alternative->domain = $user->domain; $alternative->domain = $user->domain;
$alternative->save(); $alternative->save();
$user->delete(); $user->delete();
auth()->logout(); auth()->logout();
} }
Log::debug('HERE WE ARE');
} }
} }

View File

@@ -29,6 +29,7 @@ use FireflyIII\Events\DetectedNewIPAddress;
use FireflyIII\Events\RegisteredUser; use FireflyIII\Events\RegisteredUser;
use FireflyIII\Events\RequestedNewPassword; use FireflyIII\Events\RequestedNewPassword;
use FireflyIII\Events\UserChangedEmail; use FireflyIII\Events\UserChangedEmail;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Mail\ConfirmEmailChangeMail; use FireflyIII\Mail\ConfirmEmailChangeMail;
use FireflyIII\Mail\NewIPAddressWarningMail; use FireflyIII\Mail\NewIPAddressWarningMail;
use FireflyIII\Mail\RegisteredUser as RegisteredUserMail; use FireflyIII\Mail\RegisteredUser as RegisteredUserMail;
@@ -190,6 +191,7 @@ class UserEventHandler
} catch (Exception $e) { // @phpstan-ignore-line } catch (Exception $e) { // @phpstan-ignore-line
Log::error($e->getMessage()); Log::error($e->getMessage());
} }
return true; return true;
} }
@@ -216,6 +218,7 @@ class UserEventHandler
} catch (Exception $e) { // @phpstan-ignore-line } catch (Exception $e) { // @phpstan-ignore-line
Log::error($e->getMessage()); Log::error($e->getMessage());
} }
return true; return true;
} }
@@ -241,6 +244,7 @@ class UserEventHandler
} catch (Exception $e) { // @phpstan-ignore-line } catch (Exception $e) { // @phpstan-ignore-line
Log::error($e->getMessage()); Log::error($e->getMessage());
} }
return true; return true;
} }
@@ -283,6 +287,7 @@ class UserEventHandler
/** /**
* @param Login $event * @param Login $event
*
* @throws \FireflyIII\Exceptions\FireflyException * @throws \FireflyIII\Exceptions\FireflyException
*/ */
public function storeUserIPAddress(Login $event): void public function storeUserIPAddress(Login $event): void
@@ -290,9 +295,16 @@ class UserEventHandler
/** @var User $user */ /** @var User $user */
$user = $event->user; $user = $event->user;
/** @var array $preference */ /** @var array $preference */
$preference = app('preferences')->getForUser($user, 'login_ip_history', [])->data; try {
$inArray = false; $preference = app('preferences')->getForUser($user, 'login_ip_history', [])->data;
$ip = request()->ip(); } 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)); Log::debug(sprintf('User logging in from IP address %s', $ip));
// update array if in array // update array if in array

View File

@@ -29,6 +29,7 @@ use FireflyIII\Models\Preference;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use PDOException;
use Session; use Session;
/** /**
@@ -297,7 +298,11 @@ class Preferences
$pref->name = $name; $pref->name = $name;
} }
$pref->data = $value; $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); Cache::forever($fullName, $pref);
return $pref; return $pref;