From 99f440345d47022542a6f96331c064bd1a6a408d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Jyrki=C3=A4inen?= Date: Sun, 2 Nov 2025 19:07:21 +0200 Subject: [PATCH] email validation update --- package.json | 4 +++- src/auth/groupAssignments.ts | 11 ++++++++++- yarn.lock | 10 ++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 944be51..582cf9e 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,8 @@ "react-dom": "^16.8.6", "ts-node": "^8.5.2", "typescript": "4.2.4", - "uuid": "^7.0.3" + "uuid": "^7.0.3", + "validator": "^13.15.20" }, "devDependencies": { "@graphql-codegen/cli": "^1.21.8", @@ -93,6 +94,7 @@ "@types/jest": "^24.0.11", "@types/lodash": "^4.14.122", "@types/node": "^14.17.1", + "@types/validator": "^13.15.4", "concurrently": "^4.1.0", "husky": "^1.3.1", "jest": "^24.3.1", diff --git a/src/auth/groupAssignments.ts b/src/auth/groupAssignments.ts index 8788dda..d798d74 100644 --- a/src/auth/groupAssignments.ts +++ b/src/auth/groupAssignments.ts @@ -1,3 +1,4 @@ +import validator from 'validator' import { IUserInfo, requestGroups, @@ -13,6 +14,10 @@ export async function assignUserToGroups(userInfo: IUserInfo): Promise userInfo.email.endsWith(dg.domain)) + const parsedDomains = userInfo.email.split('@') + const emailDomain = parsedDomains[parsedDomains.length - 1]?.toLowerCase() + const emailDomainGroups = assignGroups.filter( + (dg) => emailDomain === dg.domain.toLowerCase() + ) const groupAssignments = uniq(flatten(emailDomainGroups.map(({ groups }) => groups))) const assignToGroups = difference(groupAssignments, sessionGroups) diff --git a/yarn.lock b/yarn.lock index 4a2b441..f64de2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2300,6 +2300,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== +"@types/validator@^13.15.4": + version "13.15.4" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.4.tgz#38a97ae54747416f745afdfc678f041713082635" + integrity sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A== + "@types/websocket@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a" @@ -10939,6 +10944,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^13.15.20: + version "13.15.20" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.20.tgz#054e9238109538a1bf46ae3e1290845a64fa2186" + integrity sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw== + value-or-promise@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140"