From ca201ec47e22d8c8b460012cb3462a2e46b88784 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 6 Nov 2026 09:05:21 +1100 Subject: [PATCH 1/3] Require verified email through shared JWT verifier --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- pnpm-workspace.yaml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 891f2c0..9e5c1bc 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "prisma": "^7.10.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", - "tc-core-library-js": "https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6" + "tc-core-library-js": "https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4" }, "devDependencies": { "@eslint/eslintrc": "^3.3.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07c5313..d9067e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ overrides: browserslist: 4.28.8 axios@<1: 0.34.0 axios@>=1: 1.21.0 - tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6 + tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 deepmerge-ts: 8.0.0 defu: 6.1.7 effect@^3: 3.22.0 @@ -96,8 +96,8 @@ importers: specifier: ^7.8.2 version: 7.8.2 tc-core-library-js: - specifier: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6 - version: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6(supports-color@8.1.1) + specifier: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 + version: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4(supports-color@8.1.1) devDependencies: '@eslint/eslintrc': specifier: ^3.3.7 @@ -3290,9 +3290,9 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6: - resolution: {tarball: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6} - version: 4.0.0-rc.2 + tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4: + resolution: {gitHosted: true, integrity: sha512-4xzx6ycEdy8Rs5BpIOUhg/YX0cUUQpOCtTM60vcb9JF4XvqI1fLfIDmHNvZNek49dBo1Il1Lp8O/HLhKfLhhVg==, tarball: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4} + version: 4.0.0-rc.4 engines: {node: '>=22.13'} terser-webpack-plugin@5.6.1: @@ -7219,7 +7219,7 @@ snapshots: tapable@2.3.3: {} - tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6(supports-color@8.1.1): + tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4(supports-color@8.1.1): dependencies: '@types/jsonwebtoken': 9.0.10 jsonwebtoken: 9.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 98d295a..2f81ad0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -34,7 +34,7 @@ overrides: browserslist: 4.28.8 axios@<1: 0.34.0 axios@>=1: 1.21.0 - tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/58de37670180e183e8378c3d203df0112a0414f6 + tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 deepmerge-ts: 8.0.0 defu: 6.1.7 effect@^3: 3.22.0 From 903be8af6d4297fc40bf65a11ebeac06dda938cb Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 6 Nov 2026 09:22:42 +1100 Subject: [PATCH 2/3] Use compatible v4 verification backport and verified JWT fixtures --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- pnpm-workspace.yaml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 9e5c1bc..a275ba7 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "prisma": "^7.10.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", - "tc-core-library-js": "https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4" + "tc-core-library-js": "https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a" }, "devDependencies": { "@eslint/eslintrc": "^3.3.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9067e3..ec3d0a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ overrides: browserslist: 4.28.8 axios@<1: 0.34.0 axios@>=1: 1.21.0 - tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 + tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a deepmerge-ts: 8.0.0 defu: 6.1.7 effect@^3: 3.22.0 @@ -96,8 +96,8 @@ importers: specifier: ^7.8.2 version: 7.8.2 tc-core-library-js: - specifier: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 - version: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4(supports-color@8.1.1) + specifier: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a + version: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a(supports-color@8.1.1) devDependencies: '@eslint/eslintrc': specifier: ^3.3.7 @@ -3290,9 +3290,9 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4: - resolution: {gitHosted: true, integrity: sha512-4xzx6ycEdy8Rs5BpIOUhg/YX0cUUQpOCtTM60vcb9JF4XvqI1fLfIDmHNvZNek49dBo1Il1Lp8O/HLhKfLhhVg==, tarball: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4} - version: 4.0.0-rc.4 + tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a: + resolution: {gitHosted: true, integrity: sha512-n+4KUOeV4LEIsTI/R216dBc6bUkbSyO/2O0LpoY3Hk7eqKsRQFUHloB3y0hfK/v1rzf8qYQxTdv8ikeRGBn4pQ==, tarball: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a} + version: 4.0.0-rc.2.1 engines: {node: '>=22.13'} terser-webpack-plugin@5.6.1: @@ -7219,7 +7219,7 @@ snapshots: tapable@2.3.3: {} - tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4(supports-color@8.1.1): + tc-core-library-js@https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a(supports-color@8.1.1): dependencies: '@types/jsonwebtoken': 9.0.10 jsonwebtoken: 9.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2f81ad0..bf7121d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -34,7 +34,7 @@ overrides: browserslist: 4.28.8 axios@<1: 0.34.0 axios@>=1: 1.21.0 - tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/2067e74f73d7fe3442c96f375fc97f8486f79be4 + tc-core-library-js: https://codeload.github.com/topcoder-platform/tc-core-library-js/tar.gz/c2df92b2227089909ab6e229df0ec6b658bb431a deepmerge-ts: 8.0.0 defu: 6.1.7 effect@^3: 3.22.0 From b04ca332e7333a4caea338f155ff1196123b9a42 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 6 Nov 2026 09:28:13 +1100 Subject: [PATCH 3/3] Verify member email in forums authentication tests --- src/auth/jwt.service.spec.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/auth/jwt.service.spec.ts b/src/auth/jwt.service.spec.ts index f1931b9..17d046f 100644 --- a/src/auth/jwt.service.spec.ts +++ b/src/auth/jwt.service.spec.ts @@ -10,6 +10,7 @@ function token(claims: Record = {}): string { ).toString('base64url'); const body = Buffer.from( JSON.stringify({ + emailVerified: true, iss: 'https://issuer.test/', sub: '42', userId: '42', @@ -37,5 +38,10 @@ describe('shared Forums JWT identity', () => { expect(user.isMachine).toBe(false); expect(user.roles).toEqual([]); expect(user.userId).toBe('42'); + for (const emailVerified of [undefined, false, 'true']) { + await expect( + service.validateToken(token({ emailVerified })), + ).rejects.toThrow('Invalid or expired access token'); + } }); });