Refactor client portal authentication

This commit is contained in:
David Bomba 2021-12-09 21:50:29 +11:00
parent de0bebcd2c
commit d2a929b975
9 changed files with 54 additions and 39 deletions

View File

@ -58,15 +58,14 @@ class ContactForgotPasswordController extends Controller
*/
public function showLinkRequestForm(Request $request)
{
// $account_id = $request->has('account_id') ? $request->get('account_id') : 1;
// $account = Account::find($account_id);
$account = false;
if(Ninja::isHosted() && $request->has('company_key'))
if(Ninja::isHosted() && $request->session()->has('company_key'))
{
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
$company = Company::where('company_key', $request->input('company_key'))->first();
$account = $company->first();
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->session()->get('company_key'))->first();
$account = $company->account;
}
if(!$account){
@ -94,13 +93,13 @@ class ContactForgotPasswordController extends Controller
public function sendResetLinkEmail(ContactPasswordResetRequest $request)
{
if(Ninja::isHosted() && $request->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
if(Ninja::isHosted() && $request->session()->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$this->validateEmail($request);
$company = Company::where('company_key', $request->input('company_key'))->first();
$company = Company::where('company_key', $request->session()->get('company_key'))->first();
$contact = ClientContact::where(['company_id' => $company->id, 'email' => $request->input('email')])->first();
$response = false;

View File

@ -40,8 +40,8 @@ class ContactLoginController extends Controller
$company = false;
$account = false;
if($request->has('company_key')){
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
if($request->session()->has('company_key')){
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->input('company_key'))->first();
}
@ -80,8 +80,8 @@ class ContactLoginController extends Controller
{
Auth::shouldUse('contact');
if(Ninja::isHosted() && $request->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
if(Ninja::isHosted() && $request->session()->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$this->validateLogin($request);
// If the class is using the ThrottlesLogins trait, we can automatically throttle

View File

@ -29,7 +29,7 @@ class ContactRegisterController extends Controller
public function showRegisterForm(string $company_key = '')
{
$key = request()->has('key') ? request('key') : $company_key;
$key = request()->session()->has('key') ? request()->session()->get('key') : $company_key;
$company = Company::where('company_key', $key)->firstOrFail();

View File

@ -15,6 +15,7 @@ use App\Http\Controllers\Controller;
use App\Libraries\MultiDB;
use App\Models\Account;
use App\Models\ClientContact;
use App\Models\Company;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Contracts\View\Factory;
use Illuminate\Foundation\Auth\ResetsPasswords;
@ -69,18 +70,29 @@ class ContactResetPasswordController extends Controller
public function showResetForm(Request $request, $token = null)
{
if($request->has('company_key')){
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
$company = Company::where('company_key', $request->input('company_key'))->first();
if($request->session()->has('company_key')){
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->session()->get('company_key'))->first();
$db = $company->db;
$account = $company->account;
}
else {
$account_id = $request->has('account_id') ? $request->get('account_id') : 1;
$account = Account::find($account_id);
$db = $account->companies->first()->db;
$company = $account->companies->first();
$account_key = $request->session()->has('account_key') ? $request->session()->get('account_key') : false;
if($account_key){
MultiDB::findAndSetDbByAccountKey($account_key);
$account = Account::where('key', $account_key)->first();
$db = $account->companies->first()->db;
$company = $account->companies->first();
}
else{
$account = Account::first();
$db = $account->companies->first()->db;
$company = $account->companies->first();
}
}
@ -88,12 +100,13 @@ class ContactResetPasswordController extends Controller
return $this->render('auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email, 'account' => $account, 'db' => $db, 'company' => $company]
);
}
public function reset(Request $request)
{
if($request->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
if($request->session()->has('company_key'))
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$request->validate($this->rules(), $this->validationErrorMessages());

View File

@ -12,7 +12,9 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Libraries\MultiDB;
use App\Models\Account;
use App\Models\Company;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
@ -53,10 +55,9 @@ class ResetPasswordController extends Controller
public function showResetForm(Request $request, $token = null)
{
// $account_id = $request->get('account_id');
// $account = Account::find($account_id);
MultiDB::findAndSetDbByCompanyKey($request->input('company_key'));
$company = Company::where('company_key', $request->input('company_key'))->first();
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->session()->get('company_key'))->first();
$account = $company->account;
return $this->render('auth.passwords.reset', ['root' => 'themes', 'token' => $token, 'account' => $account]);

View File

@ -42,8 +42,6 @@ class InvoiceController extends Controller
*/
public function index(ShowInvoicesRequest $request)
{
// $request->request->remove('account_id');
// $request->request->remove('company_key');
return $this->render('invoices.index');
}

View File

@ -32,8 +32,8 @@ class ContactAccount
if(!Ninja::isHosted()) {
$account = Account::first();
$request->merge(['account_id' => $account->id, 'account_key' => $account->key]);
session()->put('account_key', $account->key);
}
return $next($request);

View File

@ -37,7 +37,8 @@ class ContactRegister
if(! $company->client_can_register)
abort(400, 'Registration disabled');
$request->merge(['key' => $company->company_key]);
// $request->merge(['key' => $company->company_key]);
session()->put('key', $company->company_key);
return $next($request);
}
@ -55,7 +56,8 @@ class ContactRegister
if(! $company->client_can_register)
abort(400, 'Registration disabled');
$request->merge(['key' => $company->company_key]);
// $request->merge(['key' => $company->company_key]);
session()->put('key', $company->company_key);
return $next($request);
}
@ -69,7 +71,8 @@ class ContactRegister
if(! (bool)$company->client_can_register);
abort(400, 'Registration disabled');
$request->merge(['key' => $company->company_key]);
//$request->merge(['key' => $company->company_key]);
session()->put('key', $company->company_key);
return $next($request);
}
@ -82,7 +85,8 @@ class ContactRegister
if(! $company->client_can_register)
abort(400, 'Registration disabled');
$request->merge(['key' => $company->company_key]);
//$request->merge(['key' => $company->company_key]);
session()->put('key', $company->company_key);
return $next($request);
}

View File

@ -50,8 +50,8 @@ class SetDomainNameDb
];
if($company = MultiDB::findAndSetDbByDomain($query)){
$request->merge(['company_key' => $company->company_key]);
// $request->merge(['account_id' => $company->account_id, 'company_key' => $company->company_key]);
//$request->merge(['company_key' => $company->company_key]);
session()->put('company_key', $company->company_key);
}
else
{
@ -73,8 +73,8 @@ class SetDomainNameDb
];
if($company = MultiDB::findAndSetDbByDomain($query)){
$request->merge(['company_key' => $company->company_key]);
//$request->merge(['account_id' => $company->account_id, 'company_key' => $company->company_key]);
//$request->merge(['company_key' => $company->company_key]);
session()->put('company_key', $company->company_key);
}
else
{