From 02b2ebdb881877c91a16c6e25b6a2a84cc5ebc1c Mon Sep 17 00:00:00 2001
From: Bastien Dumont <bdumont@grandlyon.com>
Date: Thu, 30 May 2024 11:07:35 +0200
Subject: [PATCH] fix: missing pce when coming from client connect

---
 src/index.js | 12 +++++++++++-
 src/types.ts |  4 ++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/index.js b/src/index.js
index f50ad7b..0097214 100755
--- a/src/index.js
+++ b/src/index.js
@@ -80,7 +80,12 @@ async function start(fields, cozyParameters) {
     )
   }
 
-  const { pce, email, firstname, lastname, postalCode } = fields
+  let { pce, email, firstname, lastname, postalCode } = fields
+
+  if (!pce && fields?.oauth_callback_results?.pce) {
+    pce = fields.oauth_callback_results.pce
+    log('info', `OAuth callback result found, using pce ${pce}`)
+  }
 
   const transaction = Sentry.startTransaction({
     op: 'konnector',
@@ -102,6 +107,11 @@ async function start(fields, cozyParameters) {
   const boUrlGRDF = new URL('/api/grdf', boBaseUrl).href
 
   try {
+    if (!pce) {
+      log('error', 'No PCE found')
+      throw errors.VENDOR_DOWN
+    }
+    log('info', `using PCE: ${pce}`)
     const { access_token } = await getAuthToken(grdfId, grdfSecret)
     const consents = await getConsents(access_token, pce)
     const noValidConsent = await handleConsents(consents, boUrlGRDF, boToken)
diff --git a/src/types.ts b/src/types.ts
index e7195d0..e7c8bfd 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -44,6 +44,10 @@ export type fields = {
   lastname: string
   firstname: string
   postalCode: string
+  /** previous PCE from oauth stored in account */
+  oauth_callback_results?: {
+    pce?: string
+  }
 }
 
 /** Cozy parameters definition */
-- 
GitLab