diff --git a/lib/format.js b/lib/format.js index dc107725..a0d87d3d 100644 --- a/lib/format.js +++ b/lib/format.js @@ -86,7 +86,7 @@ module.exports.extractEmailDomain = function(email) { // Vérification si l'adresse email est valide if (!emailRegex.test(email)) { - throw new Error("Adresse email invalide"); + return undefined } // Extraction du domaine avec un split diff --git a/lib/format.test.js b/lib/format.test.js deleted file mode 100644 index aa940d3a..00000000 --- a/lib/format.test.js +++ /dev/null @@ -1,40 +0,0 @@ -const { expect } = require("chai") -const sinon = require("sinon") - -const extractEmailDomain = require("./format") - -describe("format", function() { - - describe("extractEmailDomain", () => { - test("devrait retourner le domaine d\"une adresse email valide", () => { - const email = "john.doe@example.com"; - const domain = extractEmailDomain(email); - expect(domain).toBe("example.com"); - }); - - test("devrait retourner le domaine d\"une adresse email académique", () => { - const email = "student@university.edu"; - const domain = extractEmailDomain(email); - expect(domain).toBe("university.edu"); - }); - - test("devrait lever une erreur pour une adresse email sans @", () => { - expect(() => { - extractEmailDomain("invalidEmail"); - }).toThrow("Adresse email invalide"); - }); - - test("devrait lever une erreur pour un domaine manquant", () => { - expect(() => { - extractEmailDomain("john.doe@"); - }).toThrow("Domaine email invalide"); - }); - - test("devrait lever une erreur pour une chaîne vide", () => { - expect(() => { - extractEmailDomain("); - }).toThrow("Adresse email invalide"); - }); -}); - -}) diff --git a/lib/oidcAuth.js b/lib/oidcAuth.js index 2b0b4428..59b0688a 100644 --- a/lib/oidcAuth.js +++ b/lib/oidcAuth.js @@ -125,12 +125,12 @@ module.exports.finishAuth = async (req) => { try { const domain = format.extractEmailDomain(email) const whitelistedDomains = await getWhitelistedDomains() - if(!whitelistedDomains.includes(domain)){ - throw new Error(`The domain ${domain} is not whitelisted.`) + if(!domain || !whitelistedDomains.includes(domain)){ + console.error(`The domain ${domain} is not whitelisted.`) + return { error: `L'adresse e-mail ${email} n'est pas autorisée à utiliser ce service. Si vous êtes agent de l'État, contactez-nous à support@audioconf.numerique.gouv.fr` } } } catch(e){ console.error(`error when validating email ${email}`,e) - return { error: `L'adresse e-mail ${email} n'est pas autorisée à utiliser ce service. Si vous êtes agent de l'État, contactez-nous à support@audioconf.numerique.gouv.fr` } } const user = {id_token: tokenSet.id_token, state: request.state}