Skip to content

Commit 0f344b8

Browse files
committed
ISSUE #5373 save userID into the user entry if it is not available
1 parent 2b9113a commit 0f344b8

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

backend/src/v5/middleware/sso/frontegg.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
const { codeExists, createResponseCode, templates } = require('../../utils/responseCodes');
1919
const { fromBase64, toBase64 } = require('../../utils/helper/strings');
2020
const { generateAuthenticationCodeUrl, generateToken, getUserById, getUserInfoFromToken } = require('../../services/sso/frontegg');
21+
const { getUserByEmail, updateUserId } = require('../../models/users');
2122
const { redirectWithError, setSessionInfo } = require('.');
2223
const { addPkceProtection } = require('./pkce');
2324
const { createNewUserRecord } = require('../../processors/users');
2425
const { errorCodes } = require('../../services/sso/sso.constants');
25-
const { getUserByEmail } = require('../../models/users');
2626
const { logger } = require('../../utils/logger');
2727
const { respond } = require('../../utils/responder');
2828
const { validateMany } = require('../common');
@@ -52,7 +52,15 @@ const checkStateIsValid = async (req, res, next) => {
5252

5353
const determineUsername = async (userId, email) => {
5454
try {
55-
const { user: username } = await getUserByEmail(email, { user: 1 });
55+
const { user: username, customData } = await getUserByEmail(email, { user: 1, 'customData.userId': 1 });
56+
57+
if (!customData?.userId) {
58+
updateUserId(username, userId);
59+
} else if (userId !== customData.userId) {
60+
logger.logError(`Found user(${username}) with email but with a mismatch user ID. Expected ${userId}, found ${customData.userId}`);
61+
throw new Error('User ID mismatch');
62+
}
63+
5664
return username;
5765
} catch (err) {
5866
if (err.code !== templates.userNotFound.code) {

backend/src/v5/models/users.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ User.updateProfile = async (username, updatedProfile) => {
120120
await updateUser(username, { $set: updateData });
121121
};
122122

123+
User.updateUserId = async (username, userId) => {
124+
await updateUser(username, { $set: { 'customData.userId': userId } });
125+
};
126+
123127
User.generateApiKey = async (username) => {
124128
const apiKey = generateHashString();
125129
await updateUser(username, { $set: { 'customData.apiKey': apiKey } });

0 commit comments

Comments
 (0)