Fixes for yodlee reauth flow

This commit is contained in:
David Bomba 2025-06-19 09:08:34 +10:00
parent 52db82bb12
commit 700a0eb6c6
5 changed files with 27 additions and 5 deletions

View File

@ -14,6 +14,8 @@ namespace App\Filters;
use App\Models\Quote;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
/**
* QuoteFilters.
@ -151,17 +153,25 @@ class QuoteFilters extends QueryFilters
{
$sort_col = explode('|', $sort);
if (!is_array($sort_col) || count($sort_col) != 2 || !in_array($sort_col[0], \Illuminate\Support\Facades\Schema::getColumnListing($this->builder->getModel()->getTable()))) {
if (!is_array($sort_col) || count($sort_col) != 2) {
return $this->builder;
}
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'client_id') {
// Handle relationship-based sorting
if ($sort_col[0] == 'documents') {
return $this->builder->withCount('documents')->orderBy('documents_count', $dir);
}
// Validate column exists in database schema
if (!in_array($sort_col[0], Schema::getColumnListing($this->builder->getModel()->getTable()))) {
return $this->builder;
}
if ($sort_col[0] == 'client_id') {
return $this->builder->orderBy(\App\Models\Client::select('name')
->whereColumn('clients.id', 'quotes.client_id'), $dir);
}
if ($sort_col[0] == 'number') {

View File

@ -53,6 +53,8 @@ class YodleeController extends BaseController
$redirect_url = isset($request->getTokenContent()['is_react']) && $request->getTokenContent()['is_react'] ? config('ninja.react_url') : config('ninja.app_url');
$provider_id = isset($request->getTokenContent()['provider_id']) ? $request->getTokenContent()['provider_id'] : false;
$data = [
'access_token' => $yodlee->getAccessToken(),
'fasttrack_url' => $yodlee->getFastTrackUrl(),
@ -62,6 +64,7 @@ class YodleeController extends BaseController
'account' => $company->account,
'completed' => $request->has('window_closed') ? true : false,
'redirect_url' => $redirect_url,
'provider_id' => $provider_id,
];
return view('bank.yodlee.auth', $data);
@ -84,7 +87,7 @@ class YodleeController extends BaseController
$bank_integration->bank_account_name = $account['account_name'];
$bank_integration->bank_account_status = $account['account_status'];
$bank_integration->bank_account_number = $account['account_number'];
$bank_integration->provider_id = $account['provider_id'];
$bank_integration->provider_id = $account['provider_account_id'] ?? $account['provider_id'];
$bank_integration->provider_name = $account['provider_name'];
$bank_integration->nickname = $account['nickname'];
$bank_integration->balance = $account['current_balance'];

View File

@ -78,6 +78,10 @@ class OneTimeTokenController extends BaseController
$data['institution_id'] = $request->institution_id;
}
if($request->provider_id) {
$data['provider_id'] = $request->provider_id;
}
Cache::put($hash, $data, 3600);
return response()->json(['hash' => $hash], 200);

View File

@ -675,7 +675,7 @@ class HtmlEngine
}
$signature_invite = $this->invitation->signature_base64 ? $this->invitation : $this->enZtity->invitations()->whereNotNull('signature_base64')->orderBy('updated_at','desc')->first();
$signature_invite = $this->invitation->signature_base64 ? $this->invitation : $this->entity->invitations()->whereNotNull('signature_base64')->orderBy('updated_at','desc')->first();
if ($this->settings->signature_on_pdf) {
$data['$contact.signature'] = ['value' => $signature_invite?->signature_base64 ?? '', 'label' => ctrans('texts.signature')];

View File

@ -103,6 +103,11 @@
fastLinkURL: '{{ $fasttrack_url }}',
accessToken: 'Bearer {{ $access_token }}',
params: {
@if($provider_id)
flow: '{{ $flow }}',
providerAccountId: {{ $provider_id }},
reauthenticate: true,
@endif
configName : '{{ $config_name }}'
},
onSuccess: function (data) {