From 052dd45748f489483e249eb0328940e73291a5fb Mon Sep 17 00:00:00 2001
From: Bastien Dumont <bdumont@grandlyon.com>
Date: Mon, 20 Mar 2023 15:27:36 +0100
Subject: [PATCH] sanitizeName

---
 src/core/verifyUserIdentity.js | 12 +++++++-----
 src/helpers/sanitizeName.js    | 28 ++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 src/helpers/sanitizeName.js

diff --git a/src/core/verifyUserIdentity.js b/src/core/verifyUserIdentity.js
index 4f2dc96..6260222 100644
--- a/src/core/verifyUserIdentity.js
+++ b/src/core/verifyUserIdentity.js
@@ -8,6 +8,7 @@ const {
   removeAddressNumber,
 } = require('../helpers/parsing')
 const Sentry = require('@sentry/node')
+const { sanitizeLastname } = require('../helpers/sanitizeName')
 
 /**
  * Verify user identity
@@ -31,6 +32,7 @@ async function verifyUserIdentity(
   if (!isAlternateStart) {
     inseeCode = await getInseeCode(fields.postalCode, fields.city)
   }
+  const lastname = sanitizeLastname(fields.lastname)
 
   // Store if user is going through safety sge onboarding
   let userSafetyOnBoarding = false
@@ -40,7 +42,7 @@ async function verifyUserIdentity(
     `${baseUrl}/enedis_SDE_recherche-point/1.0`,
     apiAuthKey,
     loginUtilisateur,
-    fields.lastname,
+    lastname,
     fields.address,
     fields.postalCode,
     inseeCode
@@ -68,7 +70,7 @@ async function verifyUserIdentity(
       `${baseUrl}/enedis_SDE_recherche-point/1.0`,
       apiAuthKey,
       loginUtilisateur,
-      fields.lastname,
+      lastname,
       removeMultipleSpaces(userAddress.numeroEtNomVoie),
       userAddress.codePostal,
       userAddress.commune.$.code,
@@ -82,7 +84,7 @@ async function verifyUserIdentity(
         `${baseUrl}/enedis_SDE_recherche-point/1.0`,
         apiAuthKey,
         loginUtilisateur,
-        fields.lastname,
+        lastname,
         removeMultipleSpaces(removeAddressNumber(userAddress.numeroEtNomVoie)),
         userAddress.codePostal,
         userAddress.commune.$.code
@@ -96,7 +98,7 @@ async function verifyUserIdentity(
         `${baseUrl}/enedis_SDE_recherche-point/1.0`,
         apiAuthKey,
         loginUtilisateur,
-        fields.lastname,
+        lastname,
         removeMultipleSpaces(removeAddressNumber(userAddress.numeroEtNomVoie)),
         userAddress.codePostal,
         userAddress.commune.$.code,
@@ -122,7 +124,7 @@ async function verifyUserIdentity(
   }
 
   return {
-    lastname: fields.lastname,
+    lastname: lastname,
     firstname: fields.firstname,
     pointId: fields.pointId,
     inseeCode,
diff --git a/src/helpers/sanitizeName.js b/src/helpers/sanitizeName.js
new file mode 100644
index 0000000..8c9016f
--- /dev/null
+++ b/src/helpers/sanitizeName.js
@@ -0,0 +1,28 @@
+const REPLACE_CHARS = {
+  â: 'a',
+  ê: 'e',
+  î: 'i',
+  ô: 'o',
+  û: 'u',
+  ä: 'a',
+  ë: 'e',
+  ï: 'i',
+  ö: 'o',
+  ü: 'u',
+  é: 'e',
+  è: 'e',
+  ç: 'c',
+}
+
+/**
+ * Clean lastname input and remove all accents but not ʼ, ', -
+ * @param {string} lastname
+ * @return {string} lastnameSanitized
+ */
+function sanitizeLastname(lastname) {
+  return lastname
+    .replace(/[âêîôûäëïüéèç]/g, match => REPLACE_CHARS[match])
+    .trim()
+}
+
+module.exports = { sanitizeLastname }
-- 
GitLab