mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 19:34:39 -04:00
Multi-db support
This commit is contained in:
parent
068666a58b
commit
97c2a35868
@ -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');
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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',
|
||||
];
|
||||
}
|
||||
|
@ -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');
|
||||
});
|
||||
|
||||
|
@ -17,4 +17,9 @@ class LookupAccount extends LookupModel
|
||||
'account_key',
|
||||
];
|
||||
|
||||
public function lookupCompany()
|
||||
{
|
||||
return $this->belongsTo('App\Models\LookupCompany');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,4 +17,9 @@ class LookupCompany extends LookupModel
|
||||
'company_id',
|
||||
];
|
||||
|
||||
public function dbServer()
|
||||
{
|
||||
return $this->belongsTo('App\Models\DbServer');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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]);
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user