diff --git a/app/Http/Controllers/Auth/ContactLoginController.php b/app/Http/Controllers/Auth/ContactLoginController.php index e3919647486b..8b560e7f6892 100644 --- a/app/Http/Controllers/Auth/ContactLoginController.php +++ b/app/Http/Controllers/Auth/ContactLoginController.php @@ -41,6 +41,9 @@ class ContactLoginController extends Controller $company = false; $account = false; + if($request->query('intended')) + $request->session()->put('url.intended', $request->query('intended')); + if ($request->session()->has('company_key')) { MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key')); $company = Company::where('company_key', $request->session()->get('company_key'))->first(); @@ -81,6 +84,7 @@ class ContactLoginController extends Controller public function login(Request $request) { + Auth::shouldUse('contact'); if (Ninja::isHosted() && $request->has('company_key')) { @@ -125,6 +129,9 @@ class ContactLoginController extends Controller protected function sendLoginResponse(Request $request) { + + $intended = $request->session()->has('url.intended') ? $request->session()->get('url.intended') : false; + $request->session()->regenerate(); $this->clearLoginAttempts($request); @@ -134,6 +141,9 @@ class ContactLoginController extends Controller } $this->setRedirectPath(); + + if($intended) + $this->redirectTo = $intended; return $request->wantsJson() ? new JsonResponse([], 204) @@ -146,8 +156,8 @@ class ContactLoginController extends Controller event(new ContactLoggedIn($client, $client->company, Ninja::eventVars())); - if (session()->get('url.intended')) { - return redirect(session()->get('url.intended')); + if ($request->session()->has('url.intended')) { + return redirect($request->session()->get('url.intended')); } $this->setRedirectPath(); @@ -165,6 +175,7 @@ class ContactLoginController extends Controller private function setRedirectPath() { + if (auth()->guard('contact')->user()->client->getSetting('enable_client_portal_dashboard') === true) { $this->redirectTo = '/client/dashboard'; } elseif ((bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES)) { diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index bebbdddb4991..5120f0c0a433 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -114,15 +114,17 @@ class InvitationController extends Controller '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 { request()->session()->invalidate(); auth()->guard('contact')->loginUsingId($client_contact->id, true); } - if (auth()->guard('contact')->user() && ! request()->has('silent') && ! $invitation->viewed_date) { $invitation->markViewed();