mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Multi-db support
This commit is contained in:
parent
5baf12ae26
commit
b6242d9981
@ -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,23 +115,8 @@ 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)) {
|
||||
return \Redirect::to('/client/sessionexpired');
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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') {
|
||||
|
@ -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');
|
||||
|
@ -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]);
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
@ -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() !!}
|
||||
|
@ -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',
|
||||
])
|
||||
|
Loading…
x
Reference in New Issue
Block a user