Fixes for redirect after auth in cp

This commit is contained in:
David Bomba 2024-06-16 16:28:44 +10:00
parent 3a4f47c1a9
commit d2d436da8f
2 changed files with 18 additions and 5 deletions

View File

@ -41,6 +41,9 @@ class ContactLoginController extends Controller
$company = false; $company = false;
$account = false; $account = false;
if($request->query('intended'))
$request->session()->put('url.intended', $request->query('intended'));
if ($request->session()->has('company_key')) { if ($request->session()->has('company_key')) {
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key')); MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->session()->get('company_key'))->first(); $company = Company::where('company_key', $request->session()->get('company_key'))->first();
@ -81,6 +84,7 @@ class ContactLoginController extends Controller
public function login(Request $request) public function login(Request $request)
{ {
Auth::shouldUse('contact'); Auth::shouldUse('contact');
if (Ninja::isHosted() && $request->has('company_key')) { if (Ninja::isHosted() && $request->has('company_key')) {
@ -125,6 +129,9 @@ class ContactLoginController extends Controller
protected function sendLoginResponse(Request $request) protected function sendLoginResponse(Request $request)
{ {
$intended = $request->session()->has('url.intended') ? $request->session()->get('url.intended') : false;
$request->session()->regenerate(); $request->session()->regenerate();
$this->clearLoginAttempts($request); $this->clearLoginAttempts($request);
@ -134,6 +141,9 @@ class ContactLoginController extends Controller
} }
$this->setRedirectPath(); $this->setRedirectPath();
if($intended)
$this->redirectTo = $intended;
return $request->wantsJson() return $request->wantsJson()
? new JsonResponse([], 204) ? new JsonResponse([], 204)
@ -146,8 +156,8 @@ class ContactLoginController extends Controller
event(new ContactLoggedIn($client, $client->company, Ninja::eventVars())); event(new ContactLoggedIn($client, $client->company, Ninja::eventVars()));
if (session()->get('url.intended')) { if ($request->session()->has('url.intended')) {
return redirect(session()->get('url.intended')); return redirect($request->session()->get('url.intended'));
} }
$this->setRedirectPath(); $this->setRedirectPath();
@ -165,6 +175,7 @@ class ContactLoginController extends Controller
private function setRedirectPath() private function setRedirectPath()
{ {
if (auth()->guard('contact')->user()->client->getSetting('enable_client_portal_dashboard') === true) { if (auth()->guard('contact')->user()->client->getSetting('enable_client_portal_dashboard') === true) {
$this->redirectTo = '/client/dashboard'; $this->redirectTo = '/client/dashboard';
} elseif ((bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES)) { } elseif ((bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES)) {

View File

@ -114,15 +114,17 @@ class InvitationController extends Controller
'invitation_key' => $invitation_key 'invitation_key' => $invitation_key
]); ]);
} }
if(!auth()->guard('contact')->check()){
$this->middleware('auth:contact');
return redirect()->route('client.login', ['intended' => route('client.'.$entity.'.show', [$entity => $this->encodePrimaryKey($invitation->{$key}), 'silent' => $is_silent])]);
}
$this->middleware('auth:contact');
return redirect()->route('client.login');
} else { } else {
request()->session()->invalidate(); request()->session()->invalidate();
auth()->guard('contact')->loginUsingId($client_contact->id, true); auth()->guard('contact')->loginUsingId($client_contact->id, true);
} }
if (auth()->guard('contact')->user() && ! request()->has('silent') && ! $invitation->viewed_date) { if (auth()->guard('contact')->user() && ! request()->has('silent') && ! $invitation->viewed_date) {
$invitation->markViewed(); $invitation->markViewed();