From 3f713d3b12cefdddec0f8f5d3559e96809d64a94 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 1 May 2017 15:46:57 +0300 Subject: [PATCH] Multi-db support --- app/Console/Commands/ChargeRenewalInvoices.php | 1 + app/Console/Commands/PruneData.php | 1 + app/Console/Commands/RemoveOrphanedDocuments.php | 1 + app/Console/Commands/ResetData.php | 1 + app/Console/Commands/SendRecurringInvoices.php | 1 + app/Console/Commands/SendReminders.php | 1 + app/Console/Commands/SendRenewalInvoices.php | 1 + app/Http/Controllers/Auth/AuthController.php | 3 --- app/Http/Middleware/DatabaseLookup.php | 14 +++++++------- app/Http/routes.php | 9 ++++++--- app/Models/LookupAccount.php | 2 +- ..._04_30_174702_add_multiple_database_support.php | 2 +- 12 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/Console/Commands/ChargeRenewalInvoices.php b/app/Console/Commands/ChargeRenewalInvoices.php index ad41b3d77ea3..105a0e4675b3 100644 --- a/app/Console/Commands/ChargeRenewalInvoices.php +++ b/app/Console/Commands/ChargeRenewalInvoices.php @@ -9,6 +9,7 @@ use App\Ninja\Repositories\AccountRepository; use App\Services\PaymentService; use Illuminate\Console\Command; use Carbon; +use Symfony\Component\Console\Input\InputOption; /** * Class ChargeRenewalInvoices. diff --git a/app/Console/Commands/PruneData.php b/app/Console/Commands/PruneData.php index 0ebccbdf50a4..e42b21767f92 100644 --- a/app/Console/Commands/PruneData.php +++ b/app/Console/Commands/PruneData.php @@ -4,6 +4,7 @@ namespace App\Console\Commands; use DB; use Illuminate\Console\Command; +use Symfony\Component\Console\Input\InputOption; /** * Class PruneData. diff --git a/app/Console/Commands/RemoveOrphanedDocuments.php b/app/Console/Commands/RemoveOrphanedDocuments.php index 969c62aab4ad..4241e505cd58 100644 --- a/app/Console/Commands/RemoveOrphanedDocuments.php +++ b/app/Console/Commands/RemoveOrphanedDocuments.php @@ -5,6 +5,7 @@ namespace App\Console\Commands; use App\Models\Document; use DateTime; use Illuminate\Console\Command; +use Symfony\Component\Console\Input\InputOption; /** * Class RemoveOrphanedDocuments. diff --git a/app/Console/Commands/ResetData.php b/app/Console/Commands/ResetData.php index 1fb94d2d36e9..02ba8804c53d 100644 --- a/app/Console/Commands/ResetData.php +++ b/app/Console/Commands/ResetData.php @@ -4,6 +4,7 @@ namespace App\Console\Commands; use Illuminate\Console\Command; use Utils; +use Symfony\Component\Console\Input\InputOption; /** * Class ResetData. diff --git a/app/Console/Commands/SendRecurringInvoices.php b/app/Console/Commands/SendRecurringInvoices.php index bd5dc83278c6..6a13dc3563ad 100644 --- a/app/Console/Commands/SendRecurringInvoices.php +++ b/app/Console/Commands/SendRecurringInvoices.php @@ -9,6 +9,7 @@ use App\Ninja\Repositories\InvoiceRepository; use App\Services\PaymentService; use DateTime; use Illuminate\Console\Command; +use Symfony\Component\Console\Input\InputOption; /** * Class SendRecurringInvoices. diff --git a/app/Console/Commands/SendReminders.php b/app/Console/Commands/SendReminders.php index eb1d99666754..92334db4fefa 100644 --- a/app/Console/Commands/SendReminders.php +++ b/app/Console/Commands/SendReminders.php @@ -7,6 +7,7 @@ use App\Ninja\Mailers\ContactMailer as Mailer; use App\Ninja\Repositories\AccountRepository; use App\Ninja\Repositories\InvoiceRepository; use Illuminate\Console\Command; +use Symfony\Component\Console\Input\InputOption; /** * Class SendReminders. diff --git a/app/Console/Commands/SendRenewalInvoices.php b/app/Console/Commands/SendRenewalInvoices.php index 34b56e6b282d..ebb716347acb 100644 --- a/app/Console/Commands/SendRenewalInvoices.php +++ b/app/Console/Commands/SendRenewalInvoices.php @@ -7,6 +7,7 @@ use App\Ninja\Mailers\ContactMailer as Mailer; use App\Ninja\Repositories\AccountRepository; use Illuminate\Console\Command; use Utils; +use Symfony\Component\Console\Input\InputOption; /** * Class SendRenewalInvoices. diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 59c8e194e389..0fb64d2d8ffd 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -13,7 +13,6 @@ use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; use Illuminate\Http\Request; use Session; use Utils; -use App\Models\LookupUser; class AuthController extends Controller { @@ -142,8 +141,6 @@ class AuthController extends Controller */ public function postLoginWrapper(Request $request) { - LookupUser::setServerByField('email', $request->input('email')); - $userId = Auth::check() ? Auth::user()->id : null; $user = User::where('email', '=', $request->input('email'))->first(); diff --git a/app/Http/Middleware/DatabaseLookup.php b/app/Http/Middleware/DatabaseLookup.php index 954a91c41068..cc0162ae816e 100644 --- a/app/Http/Middleware/DatabaseLookup.php +++ b/app/Http/Middleware/DatabaseLookup.php @@ -7,6 +7,7 @@ use Closure; use App\Models\LookupContact; use App\Models\LookupInvitation; use App\Models\LookupAccountToken; +use App\Models\LookupUser; class DatabaseLookup { @@ -17,19 +18,18 @@ class DatabaseLookup } if ($guard == 'user') { - // user's value is set when logging in - if (! session(SESSION_DB_SERVER)) { - return redirect('/logout'); + if ($email = $request->email) { + LookupUser::setServerByField('email', $email); } } elseif ($guard == 'api') { if ($token = $request->header('X-Ninja-Token')) { LookupAccountToken::setServerByField('token', $token); } } elseif ($guard == 'contact') { - if (request()->invitation_key) { - LookupInvitation::setServerByField('invitation_key', request()->invitation_key); - } elseif (request()->contact_key) { - LookupContact::setServerByField('contact_key', request()->contact_key); + if ($key = request()->invitation_key) { + LookupInvitation::setServerByField('invitation_key', $key); + } elseif ($key = request()->contact_key) { + LookupContact::setServerByField('contact_key', $key); } } elseif ($guard == 'postmark') { LookupInvitation::setServerByField('message_id', request()->MessageID); diff --git a/app/Http/routes.php b/app/Http/routes.php index 386ea02a261a..1f364d160e65 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -88,14 +88,17 @@ Route::post('/payment_hook/{accountKey}/{gatewayId}', 'OnlinePaymentController@h Route::get('/signup', ['as' => 'signup', 'uses' => 'Auth\AuthController@getRegister']); Route::post('/signup', ['as' => 'signup', 'uses' => 'Auth\AuthController@postRegister']); Route::get('/login', ['as' => 'login', 'uses' => 'Auth\AuthController@getLoginWrapper']); -Route::post('/login', ['as' => 'login', 'uses' => 'Auth\AuthController@postLoginWrapper']); Route::get('/logout', ['as' => 'logout', 'uses' => 'Auth\AuthController@getLogoutWrapper']); Route::get('/recover_password', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@getEmail']); -Route::post('/recover_password', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@postEmail']); Route::get('/password/reset/{token}', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@getReset']); -Route::post('/password/reset', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@postReset']); Route::get('/user/confirm/{code}', 'UserController@confirm'); +Route::group(['middleware' => ['lookup:reset']], 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']); +}); + // Client auth Route::get('/client/login', ['as' => 'login', 'uses' => 'ClientAuth\AuthController@getLogin']); Route::post('/client/login', ['as' => 'login', 'uses' => 'ClientAuth\AuthController@postLogin']); diff --git a/app/Models/LookupAccount.php b/app/Models/LookupAccount.php index 7354e3c6746a..0d14677339a4 100644 --- a/app/Models/LookupAccount.php +++ b/app/Models/LookupAccount.php @@ -30,7 +30,7 @@ class LookupAccount extends LookupModel $current = config('database.default'); config(['database.default' => DB_NINJA_LOOKUP]); - + $server = DbServer::whereName($current)->firstOrFail(); $lookupCompany = LookupCompany::whereDbServerId($server->id) ->whereCompanyId($companyId)->first(); 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 eaf683fe687a..a809238ee3df 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,7 @@ class AddMultipleDatabaseSupport extends Migration Schema::rename('lookup_tokens', 'lookup_account_tokens'); DB::table('db_servers')->insert( - ['name' => 'db-server-1'] + ['name' => 'db-ninja-1'] ); }