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'; + + } } diff --git a/app/Services/Client/PaymentMethod.php b/app/Services/Client/PaymentMethod.php index 4a18387d2215..f36fb2b2d3db 100644 --- a/app/Services/Client/PaymentMethod.php +++ b/app/Services/Client/PaymentMethod.php @@ -70,16 +70,16 @@ class PaymentMethod $transformed_ids = $this->transformKeys(explode(',', $company_gateways)); - $this->gateways = - CompanyGateway::with('gateway') - ->where('company_id', $this->client->company_id) + $this->gateways = $this->client + ->company + ->company_gateways ->whereIn('id', $transformed_ids) ->where('is_deleted', false) ->whereNull('deleted_at') ->where('gateway_key', '!=', '54faab2ab6e3223dbe848b1686490baa') ->sortby(function ($model) use ($transformed_ids) { //company gateways are sorted in order of priority return array_search($model->id, $transformed_ids);// this closure sorts for us - })->get(); + }); } else { @@ -105,15 +105,16 @@ class PaymentMethod $transformed_ids = $this->transformKeys(explode(',', $company_gateways)); - $this->gateways = CompanyGateway::with('gateway') - ->where('company_id', $this->client->company_id) + $this->gateways = $this->client + ->company + ->company_gateways ->whereIn('id', $transformed_ids) ->where('is_deleted', false) ->whereNull('deleted_at') ->where('gateway_key', '54faab2ab6e3223dbe848b1686490baa') ->sortby(function ($model) use ($transformed_ids) { //company gateways are sorted in order of priority return array_search($model->id, $transformed_ids);// this closure sorts for us - })->get(); + }); } else { diff --git a/app/Utils/Helpers.php b/app/Utils/Helpers.php index 1594b066e521..c80b55dc6089 100644 --- a/app/Utils/Helpers.php +++ b/app/Utils/Helpers.php @@ -264,7 +264,6 @@ class Helpers return $value; // $x = str_replace(["\n", "
"], ["\r", "
"], $value); - // return $x; } diff --git a/resources/views/portal/ninja2020/invoices/payment.blade.php b/resources/views/portal/ninja2020/invoices/payment.blade.php index a3969763b6e5..b45fd4435575 100644 --- a/resources/views/portal/ninja2020/invoices/payment.blade.php +++ b/resources/views/portal/ninja2020/invoices/payment.blade.php @@ -78,7 +78,7 @@ {{ ctrans('texts.due_date') }}
- {{ $invoice->due_date }} + {{ $invoice->translateDate($invoice->due_date, $invoice->client->date_format(), $invoice->client->locale()) }}
@endif 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