51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const { getSetting, setSetting } = require('../db/database');
|
|
|
|
const SYNC_DAYS_DEFAULT = 90;
|
|
|
|
function encryptionKeyReady() {
|
|
const key = process.env.TOKEN_ENCRYPTION_KEY || '';
|
|
return Buffer.from(key, 'utf8').length >= 32;
|
|
}
|
|
|
|
function getBankSyncConfig() {
|
|
const dbValue = getSetting('bank_sync_enabled');
|
|
const envValue = process.env.BANK_SYNC_ENABLED;
|
|
|
|
let enabled;
|
|
if (dbValue !== null && dbValue !== undefined && dbValue !== '') {
|
|
enabled = dbValue === 'true';
|
|
} else if (envValue !== undefined && envValue !== '') {
|
|
enabled = envValue === 'true';
|
|
} else {
|
|
enabled = false;
|
|
}
|
|
|
|
const syncDaysDb = parseInt(getSetting('simplefin_sync_days') || '', 10);
|
|
const syncDaysEnv = parseInt(process.env.SIMPLEFIN_SYNC_DAYS || '', 10);
|
|
const syncDays = Number.isFinite(syncDaysDb) && syncDaysDb > 0
|
|
? syncDaysDb
|
|
: Number.isFinite(syncDaysEnv) && syncDaysEnv > 0
|
|
? syncDaysEnv
|
|
: SYNC_DAYS_DEFAULT;
|
|
|
|
return {
|
|
enabled,
|
|
encryption_key_set: encryptionKeyReady(),
|
|
sync_days: syncDays,
|
|
};
|
|
}
|
|
|
|
function setBankSyncEnabled(enabled) {
|
|
if (enabled && !encryptionKeyReady()) {
|
|
const err = new Error('TOKEN_ENCRYPTION_KEY must be set (32+ chars) before enabling bank sync');
|
|
err.status = 400;
|
|
throw err;
|
|
}
|
|
setSetting('bank_sync_enabled', enabled ? 'true' : 'false');
|
|
return getBankSyncConfig();
|
|
}
|
|
|
|
module.exports = { getBankSyncConfig, setBankSyncEnabled };
|