mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 03:04:34 -04:00
Rate limit bank syncing internally, not at edge of application
This commit is contained in:
parent
e10eb78ac8
commit
d70a9ddd05
@ -27,7 +27,7 @@ use App\Services\Bank\BankService;
|
|||||||
use App\Transformers\BankIntegrationTransformer;
|
use App\Transformers\BankIntegrationTransformer;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class BankIntegrationController extends BaseController
|
class BankIntegrationController extends BaseController
|
||||||
{
|
{
|
||||||
@ -572,12 +572,17 @@ class BankIntegrationController extends BaseController
|
|||||||
|
|
||||||
$account = auth()->user()->account;
|
$account = auth()->user()->account;
|
||||||
|
|
||||||
|
if(Cache::get("throttle_polling:{$account->key}"))
|
||||||
|
return response()->json(BankIntegration::query()->company(), 200);
|
||||||
|
|
||||||
$account->bank_integrations->each(function ($bank_integration) use ($account){
|
$account->bank_integrations->each(function ($bank_integration) use ($account){
|
||||||
|
|
||||||
ProcessBankTransactions::dispatch($account->bank_integration_account_id, $bank_integration);
|
ProcessBankTransactions::dispatch($account->bank_integration_account_id, $bank_integration);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Cache::put("throttle_polling:{$account->key}", true, 300);
|
||||||
|
|
||||||
return response()->json(BankIntegration::query()->company(), 200);
|
return response()->json(BankIntegration::query()->company(), 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ Route::group(['middleware' => ['throttle:10,1','api_secret_check','email_db']],
|
|||||||
Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale'], 'prefix' => 'api/v1', 'as' => 'api.'], function () {
|
Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale'], 'prefix' => 'api/v1', 'as' => 'api.'], function () {
|
||||||
Route::put('accounts/{account}', [AccountController::class, 'update'])->name('account.update');
|
Route::put('accounts/{account}', [AccountController::class, 'update'])->name('account.update');
|
||||||
Route::resource('bank_integrations', BankIntegrationController::class); // name = (clients. index / create / show / update / destroy / edit
|
Route::resource('bank_integrations', BankIntegrationController::class); // name = (clients. index / create / show / update / destroy / edit
|
||||||
Route::post('bank_integrations/refresh_accounts', [BankIntegrationController::class, 'refreshAccounts'])->name('bank_integrations.refresh_accounts')->middleware('throttle:1,1');
|
Route::post('bank_integrations/refresh_accounts', [BankIntegrationController::class, 'refreshAccounts'])->name('bank_integrations.refresh_accounts')->middleware('throttle:30,1');
|
||||||
Route::post('bank_integrations/remove_account/{acc_id}', [BankIntegrationController::class, 'removeAccount'])->name('bank_integrations.remove_account');
|
Route::post('bank_integrations/remove_account/{acc_id}', [BankIntegrationController::class, 'removeAccount'])->name('bank_integrations.remove_account');
|
||||||
Route::post('bank_integrations/get_transactions/{acc_id}', [BankIntegrationController::class, 'getTransactions'])->name('bank_integrations.transactions')->middleware('throttle:1,1');
|
Route::post('bank_integrations/get_transactions/{acc_id}', [BankIntegrationController::class, 'getTransactions'])->name('bank_integrations.transactions')->middleware('throttle:1,1');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user