From 75ae473ef20b90e5be7b13546d468becf235bf2a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 21 Feb 2022 20:31:02 +1100 Subject: [PATCH 1/2] Forward to correct location if modules are disabled --- .../Auth/ContactLoginController.php | 25 +++++++++++++-- .../ContactHashLoginController.php | 25 +++++++++++++-- app/Http/Middleware/ContactKeyLogin.php | 31 +++++++++++++++---- 3 files changed, 71 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Auth/ContactLoginController.php b/app/Http/Controllers/Auth/ContactLoginController.php index eb64a0ac41e4..f39544ea7f42 100644 --- a/app/Http/Controllers/Auth/ContactLoginController.php +++ b/app/Http/Controllers/Auth/ContactLoginController.php @@ -13,6 +13,7 @@ namespace App\Http\Controllers\Auth; use App\Events\Contact\ContactLoggedIn; use App\Http\Controllers\Controller; +use App\Http\ViewComposers\PortalComposer; use App\Libraries\MultiDB; use App\Models\Account; use App\Models\ClientContact; @@ -20,10 +21,10 @@ use App\Models\Company; use App\Utils\Ninja; use Auth; use Illuminate\Foundation\Auth\AuthenticatesUsers; -use Illuminate\Http\Request; -use Route; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; +use Route; class ContactLoginController extends Controller { @@ -131,6 +132,8 @@ class ContactLoginController extends Controller return $response; } + $this->setRedirectPath(); + return $request->wantsJson() ? new JsonResponse([], 204) : redirect()->intended($this->redirectPath()); @@ -156,4 +159,22 @@ class ContactLoginController extends Controller return redirect('/client/login'); } + + private function setRedirectPath() + { + + if(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES) + $this->redirectTo = '/client/invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES) + $this->redirectTo = '/client/recurring_invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES) + $this->redirectTo = '/client/quotes'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS) + $this->redirectTo = '/client/credits'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_TASKS) + $this->redirectTo = '/client/tasks'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_EXPENSES) + $this->redirectTo = '/client/expenses'; + + } } diff --git a/app/Http/Controllers/ClientPortal/ContactHashLoginController.php b/app/Http/Controllers/ClientPortal/ContactHashLoginController.php index 63d5b4b3abe2..51ca60adf347 100644 --- a/app/Http/Controllers/ClientPortal/ContactHashLoginController.php +++ b/app/Http/Controllers/ClientPortal/ContactHashLoginController.php @@ -12,6 +12,7 @@ namespace App\Http\Controllers\ClientPortal; use App\Http\Controllers\Controller; +use App\Http\ViewComposers\PortalComposer; use App\Models\RecurringInvoice; use Auth; @@ -36,16 +37,36 @@ class ContactHashLoginController extends Controller } - return redirect('/client/invoices'); + return redirect($this->setRedirectPath()); } public function magicLink(string $magic_link) { - return redirect('/client/invoices'); + + return redirect($this->setRedirectPath()); } public function errorPage() { return render('generic.error', ['title' => session()->get('title'), 'notification' => session()->get('notification')]); } + + private function setRedirectPath() + { + + if(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES) + return '/client/invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES) + return '/client/recurring_invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES) + return '/client/quotes'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS) + return '/client/credits'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_TASKS) + return '/client/tasks'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_EXPENSES) + return '/client/expenses'; + + } + } diff --git a/app/Http/Middleware/ContactKeyLogin.php b/app/Http/Middleware/ContactKeyLogin.php index a40b423d91d0..93d2c1edf423 100644 --- a/app/Http/Middleware/ContactKeyLogin.php +++ b/app/Http/Middleware/ContactKeyLogin.php @@ -11,6 +11,7 @@ namespace App\Http\Middleware; +use App\Http\ViewComposers\PortalComposer; use App\Libraries\MultiDB; use App\Models\Client; use App\Models\ClientContact; @@ -59,7 +60,7 @@ class ContactKeyLogin return redirect()->to($request->query('redirect')); } - return redirect()->to('client/dashboard'); + return redirect($this->setRedirectPath()); } } elseif ($request->segment(3) && config('ninja.db.multi_db_enabled')) { @@ -77,8 +78,8 @@ class ContactKeyLogin return redirect()->to($request->query('next')); } - return redirect()->to('client/dashboard'); - } + return redirect($this->setRedirectPath()); + } } } elseif ($request->segment(2) && $request->segment(2) == 'key_login' && $request->segment(3)) { @@ -93,7 +94,7 @@ class ContactKeyLogin return redirect($request->query('next')); } - return redirect()->to('client/dashboard'); + return redirect($this->setRedirectPath()); } } elseif ($request->has('client_hash') && config('ninja.db.multi_db_enabled')) { if (MultiDB::findAndSetDbByClientHash($request->input('client_hash'))) { @@ -106,7 +107,7 @@ class ContactKeyLogin $primary_contact->email = Str::random(6) . "@example.com"; $primary_contact->save(); auth()->guard('contact')->loginUsingId($primary_contact->id, true); - return redirect()->to('client/dashboard'); + return redirect($this->setRedirectPath()); } } } elseif ($request->has('client_hash')) { @@ -119,10 +120,28 @@ class ContactKeyLogin auth()->guard('contact')->loginUsingId($primary_contact->id, true); - return redirect()->to('client/dashboard'); + return redirect($this->setRedirectPath()); } } return $next($request); } + + private function setRedirectPath() + { + + if(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES) + return '/client/invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES) + return '/client/recurring_invoices'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES) + return '/client/quotes'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS) + return '/client/credits'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_TASKS) + return '/client/tasks'; + elseif(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_EXPENSES) + return '/client/expenses'; + + } } From 3177f390d2f39c6d769f6694e187e4d8e08f0d83 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Feb 2022 07:52:37 +1100 Subject: [PATCH 2/2] Translations for dropzone --- resources/views/portal/ninja2020/upload/index.blade.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/views/portal/ninja2020/upload/index.blade.php b/resources/views/portal/ninja2020/upload/index.blade.php index 13094b09988b..ae6a978b6b6c 100644 --- a/resources/views/portal/ninja2020/upload/index.blade.php +++ b/resources/views/portal/ninja2020/upload/index.blade.php @@ -11,3 +11,9 @@ + + \ No newline at end of file