Multi-db support

This commit is contained in:
Hillel Coren 2017-04-30 22:52:05 +03:00
parent 068666a58b
commit 97c2a35868
8 changed files with 44 additions and 4 deletions

View File

@ -229,6 +229,7 @@ if (! defined('APP_NAME')) {
define('SESSION_REFERRAL_CODE', 'referralCode');
define('SESSION_LEFT_SIDEBAR', 'showLeftSidebar');
define('SESSION_RIGHT_SIDEBAR', 'showRightSidebar');
define('SESSION_DB_SERVER', 'dbServer');
define('SESSION_LAST_REQUEST_PAGE', 'SESSION_LAST_REQUEST_PAGE');
define('SESSION_LAST_REQUEST_TIME', 'SESSION_LAST_REQUEST_TIME');

View File

@ -13,6 +13,7 @@ use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Http\Request;
use Session;
use Utils;
use App\Models\LookupUser;
class AuthController extends Controller
{
@ -141,6 +142,8 @@ class AuthController extends Controller
*/
public function postLoginWrapper(Request $request)
{
LookupUser::loadEmail($request->input('email'));
$userId = Auth::check() ? Auth::user()->id : null;
$user = User::where('email', '=', $request->input('email'))->first();

View File

@ -35,5 +35,6 @@ class Kernel extends HttpKernel
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'api' => 'App\Http\Middleware\ApiCheck',
'cors' => '\Barryvdh\Cors\HandleCors',
'lookup' => 'App\Http\Middleware\DatabaseLookup',
];
}

View File

@ -25,7 +25,7 @@ Route::get('/keep_alive', 'HomeController@keepAlive');
Route::post('/get_started', 'AccountController@getStarted');
// Client visible pages
Route::group(['middleware' => 'auth:client'], function () {
Route::group(['middleware' => ['auth:client', 'lookup']], function () {
Route::get('view/{invitation_key}', 'ClientPortalController@view');
Route::get('download/{invitation_key}', 'ClientPortalController@download');
Route::put('sign/{invitation_key}', 'ClientPortalController@sign');
@ -117,7 +117,7 @@ if (Utils::isTravis()) {
Route::get('/check_data', 'AppController@checkData');
}
Route::group(['middleware' => 'auth:user'], function () {
Route::group(['middleware' => ['auth:user', 'lookup']], function () {
Route::get('dashboard', 'DashboardController@index');
Route::get('dashboard_chart_data/{group_by}/{start_date}/{end_date}/{currency_id}/{include_expenses}', 'DashboardController@chartData');
Route::get('set_entity_filter/{entity_type}/{filter?}', 'AccountController@setEntityFilter');
@ -230,7 +230,7 @@ Route::group(['middleware' => 'auth:user'], function () {
});
Route::group([
'middleware' => ['auth:user', 'permissions.required'],
'middleware' => ['auth:user', 'permissions.required', 'lookup'],
'permissions' => 'admin',
], function () {
Route::get('api/users', 'UserController@getDatatable');
@ -295,7 +295,7 @@ Route::group([
Route::get('self-update/download', 'SelfUpdateController@download');
});
Route::group(['middleware' => 'auth:user'], function () {
Route::group(['middleware' => ['auth:user', 'lookup']], function () {
Route::get('settings/{section?}', 'AccountController@showSection');
});

View File

@ -17,4 +17,9 @@ class LookupAccount extends LookupModel
'account_key',
];
public function lookupCompany()
{
return $this->belongsTo('App\Models\LookupCompany');
}
}

View File

@ -17,4 +17,9 @@ class LookupCompany extends LookupModel
'company_id',
];
public function dbServer()
{
return $this->belongsTo('App\Models\DbServer');
}
}

View File

@ -14,6 +14,10 @@ class LookupModel extends Eloquent
*/
public $timestamps = false;
public function lookupAccount()
{
return $this->belongsTo('App\Models\LookupAccount');
}
public static function createNew($accountKey, $data)
{
@ -36,4 +40,9 @@ class LookupModel extends Eloquent
config(['database.default' => $current]);
}
public function getDbServer()
{
return $this->lookupAccount->lookupCompany->dbServer->name;
}
}

View File

@ -18,4 +18,20 @@ class LookupUser extends LookupModel
'user_id',
];
public static function loadEmail($email)
{
if (! env('MULTI_DB_ENABLED')) {
return;
}
$current = config('database.default');
config(['database.default' => DB_NINJA_LOOKUP]);
if ($lookupUser = static::whereEmail($email)->first()) {
session(['SESSION_DB_SERVER' => $lookupUser->getDbServer()]);
}
config(['database.default' => $current]);
}
}