Finanzen: Enable-Banking-Client (JWT, Freigabe, Sitzung, Salden, Umsaetze)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
53b50011e8
commit
9329318df5
4 files changed
+672
-1
No files matched your search
+36
-1
@@ -98,6 +98,30 @@ const newsSetup = {
|
||||
priceNickname: 'News-Einrichtung 30 €',
|
||||
}
|
||||
|
||||
// Ticketsystem (WOMS); eigene Konstante, weil auch die Enable-Banking-Rueckkehradresse darauf aufbaut
|
||||
const womsBaseUrl = (process.env.WOMS_PUBLIC_URL || 'https://ticket.webklar.com').replace(/\/$/, '')
|
||||
|
||||
const ENABLE_BANKING_API_BASE = 'https://api.enablebanking.com'
|
||||
const enableBankingAppId = (process.env.ENABLE_BANKING_APP_ID || '').trim()
|
||||
const enableBankingKeyPath = (process.env.ENABLE_BANKING_KEY_PATH || '').trim()
|
||||
|
||||
/**
|
||||
* Basisadresse der Enable-Banking-API. ENABLE_BANKING_API_BASE (nur fuer Tests: Nachbau) gilt nur fuer
|
||||
* 127.0.0.1 oder localhost; jeder andere Wert wird ignoriert, damit ein verirrter Wert den signierten
|
||||
* Zugriff (JWT) nie an einen fremden Server schickt.
|
||||
*/
|
||||
export function resolveEnableBankingApiBase(value) {
|
||||
const raw = String(value || '').trim()
|
||||
if (!raw) return ENABLE_BANKING_API_BASE
|
||||
try {
|
||||
const url = new URL(raw)
|
||||
if (['http:', 'https:'].includes(url.protocol) && ['127.0.0.1', 'localhost'].includes(url.hostname)) return url.origin
|
||||
} catch {
|
||||
// keine gueltige Adresse: Standard
|
||||
}
|
||||
return ENABLE_BANKING_API_BASE
|
||||
}
|
||||
|
||||
export const config = {
|
||||
port: Number(process.env.PORT) || 3000,
|
||||
sessionSecret: process.env.SESSION_SECRET || '',
|
||||
@@ -133,7 +157,7 @@ export const config = {
|
||||
|
||||
publicBaseUrl: (process.env.PORTAL_PUBLIC_URL || 'https://project.webklar.com').replace(/\/$/, ''),
|
||||
// Ticketsystem (WOMS), z. B. fuer den Link "Ticket oeffnen" in der Push-Zeitmail
|
||||
womsBaseUrl: (process.env.WOMS_PUBLIC_URL || 'https://ticket.webklar.com').replace(/\/$/, ''),
|
||||
womsBaseUrl,
|
||||
|
||||
// Push-Zeitmail: signierte Links zum Eintragen der Zeit eines Git-Pushes (ohne Login)
|
||||
pushTime: {
|
||||
@@ -172,6 +196,17 @@ export const config = {
|
||||
'Gemäß § 19 UStG wird keine Umsatzsteuer berechnet (Kleinunternehmerregelung). WEBklar GbR, Am Schwimmbad 10, 67722 Winnweiler',
|
||||
},
|
||||
|
||||
// Finom-Geschaeftskonto lesend ueber Enable Banking (PSD2). Der private Schluessel liegt als Datei auf dem
|
||||
// Server (nie im Repo); der Client liest ihn bei jedem Aufruf, ein Schluesseltausch wirkt ohne Neustart.
|
||||
enableBanking: {
|
||||
appId: enableBankingAppId,
|
||||
keyPath: enableBankingKeyPath,
|
||||
apiBase: resolveEnableBankingApiBase(process.env.ENABLE_BANKING_API_BASE),
|
||||
redirectUrl: `${womsBaseUrl}/finanzen/bank-callback`,
|
||||
aspsp: { name: 'Finom', country: 'DE' },
|
||||
enabled: Boolean(enableBankingAppId && enableBankingKeyPath),
|
||||
},
|
||||
|
||||
abo: {
|
||||
// Bei jeder Textaenderung an Bedingungen oder Bestellseite hochziehen (wird mit der Zustimmung gespeichert)
|
||||
termsVersion: '2026-09-30-v5',
|
||||
|
||||
Reference in new issue
Block a user