From 95d04c6058204482d2cb2d3db802b6cb1aa1e9bc Mon Sep 17 00:00:00 2001 From: Nguyen Ngo Date: Sun, 31 May 2026 23:17:28 -0400 Subject: [PATCH] 05/31 Fix template --- app/routes/teller.py | 21 ++++++++++++++++++--- app/templates/teller/index.html | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/routes/teller.py b/app/routes/teller.py index 14a7408..e1a0d30 100644 --- a/app/routes/teller.py +++ b/app/routes/teller.py @@ -36,11 +36,23 @@ def callback(): if not data: return jsonify({'error': 'No data'}), 400 + # Teller Connect onSuccess payload: + # { accessToken, user: {id}, enrollment: {id, institution: {name}} } + # accessToken is top-level, enrollment.id is nested + access_token = data.get('accessToken', '') enrollment_data = data.get('enrollment', {}) enrollment_id = enrollment_data.get('id', '') - access_token = enrollment_data.get('accessToken', '') + + # Also handle if client wraps it: { enrollment: { accessToken, id, ... } } + if not access_token and isinstance(enrollment_data, dict): + access_token = enrollment_data.get('accessToken', '') + if not enrollment_id and isinstance(enrollment_data, dict): + enrollment_id = enrollment_data.get('id', '') + + log.info(f'[teller] callback received: enrollment_id={enrollment_id!r} token_present={bool(access_token)}') if not enrollment_id or not access_token: + log.error(f'[teller] missing data. Keys received: {list(data.keys())}') return jsonify({'error': 'Missing enrollment data'}), 400 # Upsert enrollment @@ -76,8 +88,11 @@ def callback(): institution_name=institution_name, )) - enrollment.institution_name = institution_name - enrollment.user_id = enrollment_data.get('user', {}).get('id', '') + # institution.name from enrollment object (not from account loop) + if not institution_name: + institution_name = enrollment_data.get('institution', {}).get('name', '') + enrollment.institution_name = institution_name or enrollment.institution_name + enrollment.user_id = data.get('user', {}).get('id', '') or enrollment_data.get('user', {}).get('id', '') db.session.commit() return jsonify({'status': 'ok', 'redirect': url_for('teller.map_accounts', enrollment_id=enrollment_id)}) diff --git a/app/templates/teller/index.html b/app/templates/teller/index.html index 9121e51..11cb2c5 100644 --- a/app/templates/teller/index.html +++ b/app/templates/teller/index.html @@ -147,7 +147,8 @@ function initTellerConnect(btn) { 'Content-Type': 'application/json', 'X-CSRFToken': CSRF, }, - body: JSON.stringify({ enrollment: enrollment }), + // Send full Teller payload: { accessToken, user, enrollment } + body: JSON.stringify(enrollment), }) .then(r => r.json()) .then(data => {