From d5a63ffeefe71620ef34f9111b7a486eee5d7613 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 1 May 2017 10:19:27 +0300 Subject: [PATCH] Multi-db support --- app/Http/Middleware/DatabaseLookup.php | 4 ++-- app/Models/LookupUser.php | 22 ++++++++++++++++++++++ app/Models/User.php | 5 +++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/Http/Middleware/DatabaseLookup.php b/app/Http/Middleware/DatabaseLookup.php index 504961d859e9..cac9a6d2fe8a 100644 --- a/app/Http/Middleware/DatabaseLookup.php +++ b/app/Http/Middleware/DatabaseLookup.php @@ -16,8 +16,8 @@ class DatabaseLookup return $next($request); } - // user's value is set when logging in if ($guard == 'user') { + // user's value is set when logging in if (! session('SESSION_USER_DB_SERVER')) { return redirect('/logout'); } @@ -25,7 +25,7 @@ class DatabaseLookup if ($token = $request->header('X-Ninja-Token')) { LookupAccountToken::setServerByField('token', $token); } - } else { + } elseif ($guard == 'contact') { if (request()->invitation_key) { LookupInvitation::setServerByField('invitation_key', request()->invitation_key); } elseif (request()->contact_key) { diff --git a/app/Models/LookupUser.php b/app/Models/LookupUser.php index 9ba87158bf8b..dc985cde61b8 100644 --- a/app/Models/LookupUser.php +++ b/app/Models/LookupUser.php @@ -19,4 +19,26 @@ class LookupUser extends LookupModel 'user_id', ]; + public static function updateUser($accountKey, $userId, $email) + { + if (! env('MULTI_DB_ENABLED')) { + return; + } + + $current = config('database.default'); + config(['database.default' => DB_NINJA_LOOKUP]); + + $lookupAccount = LookupAccount::whereAccountKey($accountKey) + ->firstOrFail(); + + $lookupUser = LookupUser::whereLookupAccountId($lookupAccount->id) + ->whereUserId($userId) + ->firstOrFail(); + + $lookupUser->email = $email; + $lookupUser->save(); + + config(['database.default' => $current]); + } + } diff --git a/app/Models/User.php b/app/Models/User.php index 243835e180eb..d89a88b66a8d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -423,6 +423,11 @@ User::creating(function ($user) User::updating(function ($user) { User::onUpdatingUser($user); + + $dirty = $user->getDirty(); + if (isset($dirty['email'])) { + LookupUser::updateUser($user->account->account_key, $user->id, $user->email); + } }); User::updated(function ($user) {