Merge branch 'v5-develop' into v5-2804-braintree

This commit is contained in:
David Bomba 2021-05-11 21:14:54 +10:00 committed by GitHub
commit 6bfaa11f59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 107770 additions and 107447 deletions

View File

@ -160,4 +160,13 @@ abstract class QueryFilters
return $this->builder->whereClientId(auth('contact')->user()->client->id); return $this->builder->whereClientId(auth('contact')->user()->client->id);
} }
} }
public function created_at($value)
{
$created_at = $value ? $value : 0;
$created_at = date('Y-m-d H:i:s', $value);
return $this->builder->where('created_at', '>=', $created_at);
}
} }

View File

@ -207,6 +207,9 @@ class LoginController extends BaseController
$cu = CompanyUser::query() $cu = CompanyUser::query()
->where('user_id', auth()->user()->id); ->where('user_id', auth()->user()->id);
if(!$cu->exists())
return response()->json(['message' => 'User not linked to any companies'], 403);
$cu->first()->account->companies->each(function ($company) use($cu, $request){ $cu->first()->account->companies->each(function ($company) use($cu, $request){
if($company->tokens()->where('is_system', true)->count() == 0) if($company->tokens()->where('is_system', true)->count() == 0)

View File

@ -31,4 +31,9 @@ class ContactHashLoginController extends Controller
{ {
return redirect('/client/login'); return redirect('/client/login');
} }
public function errorPage()
{
return render('generic.error', ['title' => session()->get('title'), 'notification' => session()->get('notification')]);
}
} }

View File

@ -480,12 +480,9 @@ class CompanyController extends BaseController
if ($company_count == 1) { if ($company_count == 1) {
$company->company_users->each(function ($company_user) { $company->company_users->each(function ($company_user) {
$company_user->user->forceDelete(); $company_user->user->forceDelete();
$company_user->forceDelete();
}); });
// if (Ninja::isHosted()) {
// RefundCancelledAccount::dispatchNow($account);
// }
$account->delete(); $account->delete();
LightLogs::create(new AccountDeleted()) LightLogs::create(new AccountDeleted())
@ -493,6 +490,11 @@ class CompanyController extends BaseController
->batch(); ->batch();
} else { } else {
$company_id = $company->id; $company_id = $company->id;
$company->company_users->each(function ($company_user){
$company_user->forceDelete();
});
$company->delete(); $company->delete();
//If we are deleting the default companies, we'll need to make a new company the default. //If we are deleting the default companies, we'll need to make a new company the default.

View File

@ -31,15 +31,15 @@ class CheckClientExistence
$multiple_contacts = ClientContact::query() $multiple_contacts = ClientContact::query()
->where('email', auth('contact')->user()->email) ->where('email', auth('contact')->user()->email)
->whereNotNull('email') ->whereNotNull('email')
->whereNull('deleted_at')
->distinct('company_id') ->distinct('company_id')
->distinct('email')
->whereNotNull('company_id') ->whereNotNull('company_id')
->whereHas('client', function ($query) { ->whereHas('client', function ($query) {
return $query->whereNull('deleted_at'); return $query->whereNull('deleted_at');
}) })
->get(); ->get();
nlog($multiple_contacts);
if (count($multiple_contacts) == 0) { if (count($multiple_contacts) == 0) {
Auth::logout(); Auth::logout();

View File

@ -26,7 +26,7 @@ class ClientPortalEnabled
public function handle($request, Closure $next) public function handle($request, Closure $next)
{ {
if (auth()->user()->client->getSetting('enable_client_portal') === false) { if (auth()->user()->client->getSetting('enable_client_portal') === false) {
return redirect()->to('client/dashboard'); return redirect()->route('client.error')->with(['title' => ctrans('texts.client_portal'), 'notification' => 'This section of the app has been disabled by the administrator.']);
} }
return $next($request); return $next($request);

View File

@ -52,8 +52,7 @@ class QueryLogging
$timeEnd = microtime(true); $timeEnd = microtime(true);
$time = $timeEnd - $timeStart; $time = $timeEnd - $timeStart;
nlog($request->method().' - '.urldecode($request->url()).": $count queries - ".$time); //nlog($request->method().' - '.urldecode($request->url()).": $count queries - ".$time);
// if($count > 50) // if($count > 50)
//nlog($queries); //nlog($queries);

View File

@ -43,7 +43,7 @@ class ArchivedClientActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id; $fields->client_id = $event->client->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class ClientUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $client->id; $fields->client_id = $client->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedClientActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id; $fields->client_id = $event->client->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedCreditActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->credit_id = $event->credit->id; $fields->credit_id = $event->credit->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -44,7 +44,7 @@ class CreatedExpenseActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id; $fields->expense_id = $event->expense->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedQuoteActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->quote->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->quote->user_id;
$fields->quote_id = $event->quote->id; $fields->quote_id = $event->quote->id;
$fields->client_id = $event->quote->client_id; $fields->client_id = $event->quote->client_id;

View File

@ -43,7 +43,7 @@ class CreatedSubscriptionActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id; $fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedTaskActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id; $fields->task_id = $event->task->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedVendorActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id; $fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreditArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->payment_id = $event->credit->id; $fields->payment_id = $event->credit->id;
$fields->client_id = $event->credit->client_id; $fields->client_id = $event->credit->client_id;

View File

@ -43,7 +43,7 @@ class DeleteClientActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id; $fields->client_id = $event->client->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class DeleteCreditActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->client_id = $event->credit->client_id; $fields->client_id = $event->credit->client_id;
$fields->credit_id = $event->credit->id; $fields->credit_id = $event->credit->id;

View File

@ -45,7 +45,7 @@ class ExpenseArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $expense->id; $fields->expense_id = $expense->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseDeletedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id; $fields->expense_id = $event->expense->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseRestoredActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id; $fields->expense_id = $event->expense->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseUpdatedActivity implements ShouldQueue
$expense = $event->expense; $expense = $event->expense;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields = new stdClass; $fields = new stdClass;

View File

@ -48,7 +48,7 @@ class PaymentArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->payment_id = $payment->id; $fields->payment_id = $payment->id;
$fields->client_id = $payment->client_id; $fields->client_id = $payment->client_id;

View File

@ -43,7 +43,7 @@ class PaymentCreatedActivity implements ShouldQueue
$payment = $event->payment; $payment = $event->payment;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$invoices = $payment->invoices; $invoices = $payment->invoices;

View File

@ -43,7 +43,7 @@ class PaymentDeletedActivity implements ShouldQueue
$payment = $event->payment; $payment = $event->payment;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$invoices = $payment->invoices; $invoices = $payment->invoices;

View File

@ -43,7 +43,7 @@ class PaymentRefundedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->client_id = $event->payment->id; $fields->client_id = $event->payment->id;
$fields->client_id = $event->payment->client_id; $fields->client_id = $event->payment->client_id;

View File

@ -48,7 +48,7 @@ class PaymentUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->payment_id = $payment->id; $fields->payment_id = $payment->id;
$fields->client_id = $payment->client_id; $fields->client_id = $payment->client_id;

View File

@ -43,7 +43,7 @@ class PaymentVoidedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->client_id = $event->payment->id; $fields->client_id = $event->payment->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class QuoteUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->quote->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->quote->user_id;
$fields->quote_id = $quote->id; $fields->quote_id = $quote->id;
$fields->client_id = $quote->client_id; $fields->client_id = $quote->client_id;

View File

@ -43,7 +43,7 @@ class RestoreClientActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id; $fields->client_id = $event->client->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class SubscriptionArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $subscription->id; $fields->subscription_id = $subscription->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class SubscriptionDeletedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id; $fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class SubscriptionRestoredActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id; $fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class SubscriptionUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $subscription->id; $fields->subscription_id = $subscription->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class TaskArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $task->id; $fields->task_id = $task->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class TaskDeletedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id; $fields->task_id = $event->task->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class TaskRestoredActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id; $fields->task_id = $event->task->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class TaskUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $task->id; $fields->task_id = $task->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class UpdatedCreditActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->credit_id = $event->credit->id; $fields->credit_id = $event->credit->id;
$fields->client_id = $event->credit->client_id; $fields->client_id = $event->credit->client_id;

View File

@ -45,7 +45,7 @@ class VendorArchivedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $vendor->id; $fields->vendor_id = $vendor->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class VendorDeletedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id; $fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class VendorRestoredActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id; $fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class VendorUpdatedActivity implements ShouldQueue
$fields = new stdClass; $fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id; $user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $vendor->id; $fields->vendor_id = $vendor->id;
$fields->user_id = $user_id; $fields->user_id = $user_id;

View File

@ -17,6 +17,7 @@ use App\Http\Requests\Payments\PaymentWebhookRequest;
use App\Http\Requests\Request; use App\Http\Requests\Request;
use App\Jobs\Util\SystemLogger; use App\Jobs\Util\SystemLogger;
use App\Models\ClientGatewayToken; use App\Models\ClientGatewayToken;
use App\Models\CompanyGateway;
use App\Models\GatewayType; use App\Models\GatewayType;
use App\Models\Payment; use App\Models\Payment;
use App\Models\PaymentHash; use App\Models\PaymentHash;

View File

@ -30,7 +30,7 @@ const RESOURCES = {
"favicon.png": "dca91c54388f52eded692718d5a98b8b", "favicon.png": "dca91c54388f52eded692718d5a98b8b",
"version.json": "7069906ad6cc610c71d600bca7105f49", "version.json": "7069906ad6cc610c71d600bca7105f49",
"manifest.json": "ce1b79950eb917ea619a0a30da27c6a3", "manifest.json": "ce1b79950eb917ea619a0a30da27c6a3",
"main.dart.js": "d9423588e1972cdda4d056651bf3f84f", "main.dart.js": "52d9e2882b379f152b6e946271b4b266",
"favicon.ico": "51636d3a390451561744c42188ccd628", "favicon.ico": "51636d3a390451561744c42188ccd628",
"/": "23224b5e03519aaa87594403d54412cf" "/": "23224b5e03519aaa87594403d54412cf"
}; };

110576
public/main.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

104480
public/main.foss.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,7 +23,7 @@
<div class="rounded bg-white shadow-xs"> <div class="rounded bg-white shadow-xs">
<div class="py-1"> <div class="py-1">
@foreach($multiple_contacts as $contact) @foreach($multiple_contacts as $contact)
<a href="{{ route('client.switch_company', $contact->hashed_id) }}" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900">{{ $contact->company->present()->name }}</a> <a data-turbolinks="false" href="{{ route('client.switch_company', $contact->hashed_id) }}" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900">{{ $contact->company->present()->name() }} - {{ $contact->client->present()->name()}}</a>
@endforeach @endforeach
</div> </div>
</div> </div>

View File

@ -0,0 +1,20 @@
@extends('portal.ninja2020.layout.clean')
@section('meta_title', ctrans('texts.confirmation'))
@section('body')
<div class="flex h-screen">
<div class="m-auto md:w-1/3 lg:w-1/5">
<div class="flex flex-col items-center">
<img src="{{ asset('images/invoiceninja-black-logo-2.png') }}" class="border-b border-gray-100 h-18 pb-4" alt="Invoice Ninja logo">
<h1 class="text-center text-3xl mt-10">{{ $title }}</h1>
<p class="text-center opacity-75">{{ $notification }}</p>
</div>
</div>
</div>
@stop
@push('footer')
@endpush

View File

@ -24,6 +24,7 @@ Route::get('tmp_pdf/{hash}', 'ClientPortal\TempRouteController@index')->name('tm
Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']); Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']);
Route::get('client/magic_link/{magic_link}', 'ClientPortal\ContactHashLoginController@magicLink')->name('client.contact_magic_link')->middleware(['contact_key_login']); Route::get('client/magic_link/{magic_link}', 'ClientPortal\ContactHashLoginController@magicLink')->name('client.contact_magic_link')->middleware(['contact_key_login']);
Route::get('documents/{document_hash}', 'ClientPortal\DocumentController@publicDownload')->name('documents.public_download'); Route::get('documents/{document_hash}', 'ClientPortal\DocumentController@publicDownload')->name('documents.public_download');
Route::get('error', 'ClientPortal\ContactHashLoginController@errorPage')->name('client.error');
//todo implement domain DB //todo implement domain DB
Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence'], 'prefix' => 'client', 'as' => 'client.'], function () { Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence'], 'prefix' => 'client', 'as' => 'client.'], function () {
@ -54,7 +55,7 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence
Route::get('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@verify')->name('payment_methods.verification'); Route::get('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@verify')->name('payment_methods.verification');
Route::post('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@processVerification'); Route::post('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@processVerification');
Route::resource('payment_methods', 'ClientPortal\PaymentMethodController')->except(['edit', 'update']); // name = (payment_methods. index / create / show / update / destroy / edit Route::resource('payment_methods', 'ClientPortal\PaymentMethodController')->except(['edit', 'update']);
Route::match(['GET', 'POST'], 'quotes/approve', 'ClientPortal\QuoteController@bulk')->name('quotes.bulk'); Route::match(['GET', 'POST'], 'quotes/approve', 'ClientPortal\QuoteController@bulk')->name('quotes.bulk');
Route::get('quotes', 'ClientPortal\QuoteController@index')->name('quotes.index')->middleware('portal_enabled'); Route::get('quotes', 'ClientPortal\QuoteController@index')->name('quotes.index')->middleware('portal_enabled');
@ -74,10 +75,9 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence
Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', 'ClientPortal\SubscriptionPlanSwitchController@index')->name('subscription.plan_switch'); Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', 'ClientPortal\SubscriptionPlanSwitchController@index')->name('subscription.plan_switch');
Route::resource('subscriptions', 'ClientPortal\SubscriptionController')->only(['index']); Route::resource('subscriptions', 'ClientPortal\SubscriptionController')->middleware('portal_enabled')->only(['index']);
Route::post('upload', 'ClientPortal\UploadController')->name('upload.store'); Route::post('upload', 'ClientPortal\UploadController')->name('upload.store');
Route::get('logout', 'Auth\ContactLoginController@logout')->name('logout'); Route::get('logout', 'Auth\ContactLoginController@logout')->name('logout');
}); });