Replace free-text institution entry with a searchable bank picker

GET /api/banking/institutions lists the banks Enable Banking can connect
for a country (personal AIS, connectable consents only), with logos
restricted to https Enable Banking hosts to match the CSP image
allowlist. The connect form offers a filterable dropdown with bank
logos, falling back to the previous free-text input when the list is
unavailable or banking is not configured.
This commit is contained in:
Lars Nolden
2026-09-11 11:17:03 +02:00
parent a8722d58c3
commit 3df9bda989
9 changed files with 345 additions and 24 deletions
+15
View File
@@ -203,6 +203,21 @@ func (a *App) Authorize(ctx context.Context, institution, country string, histor
}
return url, err
}
// Institutions lists connectable banks for the country so the UI can offer
// a picker instead of free-text entry. Provider failures stay sanitized.
func (a *App) Institutions(ctx context.Context, country string) ([]banking.Institution, error) {
a.mu.Lock()
defer a.mu.Unlock()
if a.bank == nil {
return nil, errors.New("Enable Banking is not configured")
}
list, err := a.bank.Institutions(ctx, country)
if err != nil {
return nil, bankFailure(err, "institution list unavailable; retry")
}
return list, nil
}
func normalizedIBAN(s string) string { return strings.ToUpper(strings.Join(strings.Fields(s), "")) }
func connectAccounts(d *domain.Dataset, session *banking.Session, reconnect bool) {
for i, account := range session.Accounts {