diff --git a/src/modules/authentication/services/handleSamlToFirebaseAuthentication.service.ts b/src/modules/authentication/services/handleSamlToFirebaseAuthentication.service.ts index b992a1c..487875b 100644 --- a/src/modules/authentication/services/handleSamlToFirebaseAuthentication.service.ts +++ b/src/modules/authentication/services/handleSamlToFirebaseAuthentication.service.ts @@ -1,5 +1,4 @@ import { inject, injectable } from "tsyringe"; -import { isEmail } from "validator"; // i18n import import { i18n } from "@shared/i18n"; @@ -10,6 +9,9 @@ import { AppError } from "@shared/errors/AppError"; // Provider import import { IAuthenticationProvider } from "@shared/container/providers/AuthenticationProvider/models/IAuthentication.provider"; +// Utils import +import { isValidEmail } from "@shared/utils/isValidEmail"; + // Enum import import { AUTH_PROVIDER } from "@shared/container/providers/AuthenticationProvider/types/authProvider.enum"; @@ -37,7 +39,7 @@ class HandleSamlToFirebaseAuthenticationService { const t = await i18n(language); try { - if (!user.email || !isEmail(user.email)) { + if (!user.email || !isValidEmail(user.email)) { throw new AppError({ key: "@handle_saml_to_firebase_authentication_service/EMAIL_REQUIRED", message: t( diff --git a/src/shared/infrastructure/saml/strategy.ts b/src/shared/infrastructure/saml/strategy.ts index b3c92d7..dbe42cd 100644 --- a/src/shared/infrastructure/saml/strategy.ts +++ b/src/shared/infrastructure/saml/strategy.ts @@ -6,13 +6,13 @@ import schedule from "node-schedule"; import { MetadataReader, toPassportConfig } from "passport-saml-metadata"; import { XMLBuilder } from "fast-xml-parser"; import { container } from "tsyringe"; -import { isEmail } from "validator"; // Error import import { AppError } from "@shared/errors/AppError"; // Util import import { logger } from "@shared/utils/logger"; +import { isValidEmail } from "@shared/utils/isValidEmail"; // Service import import { HandleSamlToFirebaseAuthenticationService } from "@modules/authentication/services/handleSamlToFirebaseAuthentication.service"; @@ -65,7 +65,7 @@ class SamlFederationManager { "urn:oid:2.5.4.42": "givenName", "urn:oid:2.5.4.4": "sn", "urn:oid:1.3.6.1.4.1.5923.1.1.1.6": "eduPersonPrincipalName", - "urn:oid:1.3.6.1.4.1.1466.115.121.1.26": "inetOrgPerson", + "urn:oid:1.3.6.1.4.1.1466.115.121.1.26": "e-mail", }; constructor() { @@ -427,10 +427,15 @@ class SamlFederationManager { } }); + console.log({ + friendly, + rawClaims, + }); + return { uid: friendly.uid, - email: isEmail(friendly.inetOrgPerson) - ? friendly.inetOrgPerson + email: isValidEmail(friendly["e-mail"]) + ? friendly["e-mail"] : friendly.mail, firstName: friendly.givenName, lastName: friendly.sn, diff --git a/src/shared/utils/isValidEmail/index.ts b/src/shared/utils/isValidEmail/index.ts new file mode 100644 index 0000000..f12a6dd --- /dev/null +++ b/src/shared/utils/isValidEmail/index.ts @@ -0,0 +1,6 @@ +const isValidEmail = (email: string): boolean => { + if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) return true; + return false; +}; + +export { isValidEmail };