introduce ENV-variables for nordigen

This commit is contained in:
paulwer 2023-12-11 13:23:28 +01:00
parent a937f5dcef
commit fab47bd08c
6 changed files with 40 additions and 21 deletions

View File

@ -21,7 +21,7 @@ use Nordigen\NordigenPHP\Exceptions\NordigenExceptions\NordigenException;
class Nordigen
{
public bool $test_mode = false; // https://developer.gocardless.com/bank-account-data/sandbox
public bool $test_mode = config('ninja.nordigen.test_mode'); // https://developer.gocardless.com/bank-account-data/sandbox
public string $sandbox_institutionId = "SANDBOXFINANCE_SFIN0000";

View File

@ -35,11 +35,12 @@ class NordigenController extends BaseController
return response()->redirectTo($data["redirect"] . "?action=nordigen_connect&status=failed&reason=token-invalid");
$company = $request->getCompany();
$account = $company->account;
if (!$company->account->bank_integration_nordigen_secret_id || !$company->account->bank_integration_nordigen_secret_key)
if (!(($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key'))))
return response()->redirectTo($data["redirect"] . "?action=nordigen_connect&status=failed&reason=account-config-invalid");
$nordigen = new Nordigen($company->account->bank_integration_nordigen_secret_id, $company->account->bank_integration_nordigen_secret_key);
$nordigen = ($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) ? new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key) : new Nordigen(config('ninja.nordigen.secret_id'), config('ninja.nordigen.secret_key'));
// show bank_selection_screen, when institution_id is not present
if (!array_key_exists("institution_id", $data)) {
@ -156,11 +157,11 @@ class NordigenController extends BaseController
$company = Company::where('company_key', $context["company_key"])->first();
$account = $company->account;
if (!$account->bank_integration_nordigen_secret_id || !$account->bank_integration_nordigen_secret_key)
if (!(($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key'))))
return response()->redirectTo($context["redirect"] . "?action=nordigen_connect&status=failed&reason=account-config-invalid");
// fetch requisition
$nordigen = new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key);
$nordigen = ($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) ? new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key) : new Nordigen(config('ninja.nordigen.secret_id'), config('ninja.nordigen.secret_key'));
$requisition = $nordigen->getRequisition($context["requisitionId"]);
// check validity of requisition
@ -302,10 +303,10 @@ class NordigenController extends BaseController
{
$account = auth()->user()->account;
if (!$account->bank_integration_nordigen_secret_id || !$account->bank_integration_nordigen_secret_key)
if (!(($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key'))))
return response()->json(['message' => 'Not yet authenticated with Nordigen Bank Integration service'], 400);
$nordigen = new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key);
$nordigen = ($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) ? new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key) : new Nordigen(config('ninja.nordigen.secret_id'), config('ninja.nordigen.secret_key'));
return response()->json($nordigen->getInstitutions());
}

View File

@ -213,7 +213,7 @@ class BankIntegrationController extends BaseController
});
if ($user->account->bank_integration_nordigen_secret_id && $user->account->bank_integration_nordigen_secret_key)
if (($user->account->bank_integration_nordigen_secret_id && $user->account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key')))
$user_account->bank_integrations->where("integration_type", BankIntegration::INTEGRATION_TYPE_NORDIGEN)->andWhere('auto_sync', true)->each(function ($bank_integration) use ($user_account) {
ProcessBankTransactionsNordigen::dispatch($user_account, $bank_integration);
@ -263,10 +263,12 @@ class BankIntegrationController extends BaseController
private function refreshAccountsNordigen(User $user)
{
if (!$user->account->bank_integration_nordigen_secret_id || !$user->account->bank_integration_nordigen_secret_key)
$account = $user->account;
if (!(($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key'))))
return;
$nordigen = new Nordigen($user->account->bank_integration_nordigen_secret_id, $user->account->bank_integration_nordigen_secret_key);
$nordigen = ($account->bank_integration_nordigen_secret_id && $account->bank_integration_nordigen_secret_key) ? new Nordigen($account->bank_integration_nordigen_secret_id, $account->bank_integration_nordigen_secret_key) : new Nordigen(config('ninja.nordigen.secret_id'), config('ninja.nordigen.secret_key'));
BankIntegration::withTrashed()->where("integration_type", BankIntegration::INTEGRATION_TYPE_NORDIGEN)->each(function (BankIntegration $bank_integration) use ($nordigen) {
$account = $nordigen->getAccount($bank_integration->nordigen_account_id);

View File

@ -56,8 +56,10 @@ class ProcessBankTransactionsNordigen implements ShouldQueue
if ($this->bank_integration->integration_type != BankIntegration::INTEGRATION_TYPE_NORDIGEN)
throw new \Exception("Invalid BankIntegration Type");
$this->nordigen = new Nordigen($this->account->bank_integration_nordigen_secret_id, $this->account->bank_integration_nordigen_secret_key);
if (!(($this->account->bank_integration_nordigen_secret_id && $this->account->bank_integration_nordigen_secret_key) || (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key'))))
throw new \Exception("Missing credentials for bank_integration service nortigen");
$this->nordigen = ($this->account->bank_integration_nordigen_secret_id && $this->account->bank_integration_nordigen_secret_key) ? new Nordigen($this->account->bank_integration_nordigen_secret_id, $this->account->bank_integration_nordigen_secret_key) : new Nordigen(config('ninja.nordigen.secret_id'), config('ninja.nordigen.secret_key'));
}
/**
@ -78,7 +80,8 @@ class ProcessBankTransactionsNordigen implements ShouldQueue
try {
$this->updateAccount();
} catch (\Exception $e) {
nlog("{$this->account->bank_integration_nordigen_secret_id} - exited abnormally => " . $e->getMessage());
$secretId = $this->account->bank_integration_nordigen_secret_id ?: config('ninja.nortigen.secret_id');
nlog("{$secretId} - exited abnormally => " . $e->getMessage());
$content = [
"Processing transactions for account: {$this->bank_integration->account->key} failed",
@ -98,7 +101,8 @@ class ProcessBankTransactionsNordigen implements ShouldQueue
try {
$this->processTransactions();
} catch (\Exception $e) {
nlog("{$this->account->bank_integration_nordigen_secret_id} - exited abnormally => " . $e->getMessage());
$secretId = $this->account->bank_integration_nordigen_secret_id ?: config('ninja.nortigen.secret_id');
nlog("{$secretId} - exited abnormally => " . $e->getMessage());
$content = [
"Processing transactions for account: {$this->bank_integration->account->key} failed",

View File

@ -52,7 +52,7 @@ class BankTransactionSync implements ShouldQueue
if (Ninja::isHosted()) { // @turbo124 @todo I migrated the schedule for the job within the kernel to execute on all platforms and use the same expression here to determine if yodlee can run or not. Please chek/verify
nlog("syncing transactions - yodlee");
$a = Account::with('bank_integrations')->whereNotNull('bank_integration_yodlee_account_id')->cursor()->each(function ($account) {
Account::with('bank_integrations')->whereNotNull('bank_integration_yodlee_account_id')->cursor()->each(function ($account) {
// $queue = Ninja::isHosted() ? 'bank' : 'default';
if ($account->isPaid() && $account->plan == 'enterprise') {
@ -65,7 +65,14 @@ class BankTransactionSync implements ShouldQueue
nlog("syncing transactions - nordigen");
$b = Account::with('bank_integrations')->whereNotNull('bank_integration_nordigen_secret_id')->andWhereNotNull('bank_integration_nordigen_secret_key')->cursor()->each(function ($account) {
if (config("ninja.nortigen.secret_id") && config("ninja.nortigen.secret_key"))
Account::with('bank_integrations')->cursor()->each(function ($account) {
$account->bank_integrations()->where('integration_type', BankIntegration::INTEGRATION_TYPE_NORDIGEN)->andWhere('auto_sync', true)->cursor()->each(function ($bank_integration) use ($account) {
(new ProcessBankTransactionsNordigen($account, $bank_integration))->handle();
});
});
else
Account::with('bank_integrations')->whereNotNull('bank_integration_nordigen_secret_id')->andWhereNotNull('bank_integration_nordigen_secret_key')->cursor()->each(function ($account) {
$account->bank_integrations()->where('integration_type', BankIntegration::INTEGRATION_TYPE_NORDIGEN)->andWhere('auto_sync', true)->cursor()->each(function ($bank_integration) use ($account) {
(new ProcessBankTransactionsNordigen($account, $bank_integration))->handle();
});

View File

@ -196,7 +196,7 @@ return [
'ninja_default_company_id' => env('NINJA_COMPANY_ID', null),
'ninja_default_company_gateway_id' => env('NINJA_COMPANY_GATEWAY_ID', null),
'ninja_hosted_secret' => env('NINJA_HOSTED_SECRET', ''),
'ninja_hosted_header' =>env('NINJA_HEADER', ''),
'ninja_hosted_header' => env('NINJA_HEADER', ''),
'ninja_connect_secret' => env('NINJA_CONNECT_SECRET', ''),
'internal_queue_enabled' => env('INTERNAL_QUEUE_ENABLED', true),
'ninja_apple_api_key' => env('APPLE_API_KEY', false),
@ -218,6 +218,11 @@ return [
'dev_mode' => env("YODLEE_DEV_MODE", false),
'config_name' => env("YODLEE_CONFIG_NAME", false),
],
'nordigen' => [
'client_id' => env('NORDIGEN_SECRET_ID', false),
'client_secret' => env('NORDIGEN_SECRET_KEY', false),
'test_mode' => env("NORDIGEN_TEST_MODE", false),
],
'licenses' => env('LICENSES', false),
'google_application_credentials' => env("GOOGLE_APPLICATION_CREDENTIALS", false),
'shopify' => [