From 5baf12ae261fc9e6bd37dacaf0c0faa66026615c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 1 May 2017 16:06:34 +0300 Subject: [PATCH] Multi-db support --- app/Http/Middleware/DatabaseLookup.php | 4 +++- app/Http/routes.php | 2 +- app/Models/LookupModel.php | 7 ++++--- .../2017_04_30_174702_add_multiple_database_support.php | 3 ++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/Http/Middleware/DatabaseLookup.php b/app/Http/Middleware/DatabaseLookup.php index cc0162ae816e..6dba0fca91fd 100644 --- a/app/Http/Middleware/DatabaseLookup.php +++ b/app/Http/Middleware/DatabaseLookup.php @@ -18,7 +18,9 @@ class DatabaseLookup } if ($guard == 'user') { - if ($email = $request->email) { + if ($server = session(SESSION_DB_SERVER)) { + config(['database.default' => $server]); + } elseif ($email = $request->email) { LookupUser::setServerByField('email', $email); } } elseif ($guard == 'api') { diff --git a/app/Http/routes.php b/app/Http/routes.php index 1f364d160e65..787081ecbbd4 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -93,7 +93,7 @@ Route::get('/recover_password', ['as' => 'forgot', 'uses' => 'Auth\PasswordContr Route::get('/password/reset/{token}', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@getReset']); Route::get('/user/confirm/{code}', 'UserController@confirm'); -Route::group(['middleware' => ['lookup:reset']], function () { +Route::group(['middleware' => ['lookup:user']], function () { Route::post('/login', ['as' => 'login', 'uses' => 'Auth\AuthController@postLoginWrapper']); Route::post('/recover_password', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@postEmail']); Route::post('/password/reset', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@postReset']); diff --git a/app/Models/LookupModel.php b/app/Models/LookupModel.php index aa1d5cd7c793..9ddc4868aa6e 100644 --- a/app/Models/LookupModel.php +++ b/app/Models/LookupModel.php @@ -68,7 +68,7 @@ class LookupModel extends Eloquent $isUser = $className == 'App\Models\User'; // check if we've cached this lookup - if ($server = session($key)) { + if (env('MULTI_DB_CACHE_ENABLED') && $server = session($key)) { static::setDbServer($server, $isUser); return; } @@ -76,9 +76,10 @@ class LookupModel extends Eloquent $current = config('database.default'); config(['database.default' => DB_NINJA_LOOKUP]); - if ($value && $lookupUser = static::where($field, '=', $value)->first()) { + if ($value && $lookupModel = static::where($field, '=', $value)->first()) { $entity = new $className(); - $server = $lookupUser->getDbServer(); + $server = $lookupModel->getDbServer(); + static::setDbServer($server, $isUser); // check entity is found on the server diff --git a/database/migrations/2017_04_30_174702_add_multiple_database_support.php b/database/migrations/2017_04_30_174702_add_multiple_database_support.php index a809238ee3df..d32ce2dcd557 100644 --- a/database/migrations/2017_04_30_174702_add_multiple_database_support.php +++ b/database/migrations/2017_04_30_174702_add_multiple_database_support.php @@ -49,7 +49,8 @@ class AddMultipleDatabaseSupport extends Migration Schema::rename('lookup_tokens', 'lookup_account_tokens'); DB::table('db_servers')->insert( - ['name' => 'db-ninja-1'] + ['name' => 'db-ninja-1'], + ['name' => 'db-ninja-2'], ); }