Multi-db support

This commit is contained in:
Hillel Coren 2017-05-01 17:29:31 +03:00
parent 5baf12ae26
commit b6242d9981
8 changed files with 34 additions and 39 deletions

View File

@ -51,8 +51,8 @@ class PasswordController extends Controller
$data = [
'clientauth' => true,
];
$contactKey = session('contact_key');
if (!$contactKey) {
if (! session('contact_key')) {
return \Redirect::to('/client/sessionexpired');
}
@ -104,7 +104,7 @@ class PasswordController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function showResetForm(Request $request, $key = null, $token = null)
public function showResetForm(Request $request, $token = null)
{
if (is_null($token)) {
return $this->getEmail();
@ -115,24 +115,9 @@ class PasswordController extends Controller
'clientauth' => true,
);
if ($key) {
$contact = Contact::where('contact_key', '=', $key)->first();
if ($contact && ! $contact->is_deleted) {
$account = $contact->account;
$data['contact_key'] = $contact->contact_key;
} else {
// Maybe it's an invitation key
$invitation = Invitation::where('invitation_key', '=', $key)->first();
if ($invitation && ! $invitation->is_deleted) {
$account = $invitation->account;
$data['contact_key'] = $invitation->contact->contact_key;
}
}
if ( empty($account)) {
if (! session('contact_key')) {
return \Redirect::to('/client/sessionexpired');
}
}
return view('clientauth.reset')->with($data);
}
@ -148,9 +133,9 @@ class PasswordController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function getReset(Request $request, $key = null, $token = null)
public function getReset(Request $request, $token = null)
{
return $this->showResetForm($request, $key, $token);
return $this->showResetForm($request, $token);
}
/**

View File

@ -22,6 +22,8 @@ class DatabaseLookup
config(['database.default' => $server]);
} elseif ($email = $request->email) {
LookupUser::setServerByField('email', $email);
} elseif ($code = $request->confirmation_code) {
LookupUser::setServerByField('confirmation_code', $code);
}
} elseif ($guard == 'api') {
if ($token = $request->header('X-Ninja-Token')) {
@ -30,7 +32,7 @@ class DatabaseLookup
} elseif ($guard == 'contact') {
if ($key = request()->invitation_key) {
LookupInvitation::setServerByField('invitation_key', $key);
} elseif ($key = request()->contact_key) {
} elseif ($key = request()->contact_key ?: session('contact_key')) {
LookupContact::setServerByField('contact_key', $key);
}
} elseif ($guard == 'postmark') {

View File

@ -91,9 +91,8 @@ Route::get('/login', ['as' => 'login', 'uses' => 'Auth\AuthController@getLoginWr
Route::get('/logout', ['as' => 'logout', 'uses' => 'Auth\AuthController@getLogoutWrapper']);
Route::get('/recover_password', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@getEmail']);
Route::get('/password/reset/{token}', ['as' => 'forgot', 'uses' => 'Auth\PasswordController@getReset']);
Route::get('/user/confirm/{code}', 'UserController@confirm');
Route::group(['middleware' => ['lookup:user']], function () {
Route::get('/user/confirm/{confirmation_code}', 'UserController@confirm');
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']);
@ -101,13 +100,15 @@ Route::group(['middleware' => ['lookup:user']], function () {
// Client auth
Route::get('/client/login', ['as' => 'login', 'uses' => 'ClientAuth\AuthController@getLogin']);
Route::post('/client/login', ['as' => 'login', 'uses' => 'ClientAuth\AuthController@postLogin']);
Route::get('/client/logout', ['as' => 'logout', 'uses' => 'ClientAuth\AuthController@getLogout']);
Route::get('/client/sessionexpired', ['as' => 'logout', 'uses' => 'ClientAuth\AuthController@getSessionExpired']);
Route::get('/client/recover_password', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@getEmail']);
Route::post('/client/recover_password', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@postEmail']);
Route::get('/client/password/reset/{invitation_key}/{token}', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@getReset']);
Route::post('/client/password/reset', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@postReset']);
Route::get('/client/password/reset/{token}', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@getReset']);
Route::group(['middleware' => ['lookup:contact']], function () {
Route::post('/client/login', ['as' => 'login', 'uses' => 'ClientAuth\AuthController@postLogin']);
Route::post('/client/recover_password', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@postEmail']);
Route::post('/client/password/reset', ['as' => 'forgot', 'uses' => 'ClientAuth\PasswordController@postReset']);
});
if (Utils::isNinja()) {
Route::post('/signup/register', 'AccountController@doRegister');

View File

@ -19,7 +19,7 @@ class LookupUser extends LookupModel
'user_id',
];
public static function updateUser($accountKey, $userId, $email)
public static function updateUser($accountKey, $userId, $email, $confirmationCode)
{
if (! env('MULTI_DB_ENABLED')) {
return;
@ -36,6 +36,7 @@ class LookupUser extends LookupModel
->firstOrFail();
$lookupUser->email = $email;
$lookupUser->confirmation_code = $confirmationCode;
$lookupUser->save();
config(['database.default' => $current]);

View File

@ -425,8 +425,8 @@ User::updating(function ($user) {
User::onUpdatingUser($user);
$dirty = $user->getDirty();
if (isset($dirty['email'])) {
LookupUser::updateUser($user->account->account_key, $user->id, $user->email);
if (isset($dirty['email']) || isset($dirty['confirmation_code'])) {
LookupUser::updateUser($user->account->account_key, $user->id, $user->email, $user->confirmation_code);
}
});

View File

@ -26,6 +26,7 @@ class AddMultipleDatabaseSupport extends Migration
Schema::table('lookup_users', function ($table) {
$table->string('email')->change()->nullable()->unique();
$table->string('confirmation_code')->nullable()->unique();
$table->unsignedInteger('user_id')->index();
});
@ -49,8 +50,10 @@ class AddMultipleDatabaseSupport extends Migration
Schema::rename('lookup_tokens', 'lookup_account_tokens');
DB::table('db_servers')->insert(
['name' => 'db-ninja-1'],
['name' => 'db-ninja-2'],
['name' => 'db-ninja-1']
);
DB::table('db_servers')->insert(
['name' => 'db-ninja-2']
);
}
@ -65,6 +68,10 @@ class AddMultipleDatabaseSupport extends Migration
$table->dropColumn('company_id');
});
Schema::table('lookup_users', function ($table) {
$table->dropColumn('confirmation_code');
});
Schema::rename('lookup_account_tokens', 'lookup_tokens');
}
}

View File

@ -33,7 +33,6 @@
@endif
<input type="hidden" name="token" value="{{{ $token }}}">
<input type="hidden" name="contact_key" value="{{{ $contact_key }}}">
<div>
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}

View File

@ -8,7 +8,7 @@
<div>
<center>
@include('partials.email_button', [
'link' => URL::to("client/password/reset/".session('contact_key')."/{$token}"),
'link' => URL::to("client/password/reset/{$token}"),
'field' => 'reset',
'color' => '#36c157',
])