|
18 | 18 | const { codeExists, createResponseCode, templates } = require('../../utils/responseCodes');
|
19 | 19 | const { fromBase64, toBase64 } = require('../../utils/helper/strings');
|
20 | 20 | const { generateAuthenticationCodeUrl, generateToken, getUserById, getUserInfoFromToken } = require('../../services/sso/frontegg');
|
| 21 | +const { getUserByEmail, updateUserId } = require('../../models/users'); |
21 | 22 | const { redirectWithError, setSessionInfo } = require('.');
|
22 | 23 | const { addPkceProtection } = require('./pkce');
|
23 | 24 | const { createNewUserRecord } = require('../../processors/users');
|
24 | 25 | const { errorCodes } = require('../../services/sso/sso.constants');
|
25 |
| -const { getUserByEmail } = require('../../models/users'); |
26 | 26 | const { logger } = require('../../utils/logger');
|
27 | 27 | const { respond } = require('../../utils/responder');
|
28 | 28 | const { validateMany } = require('../common');
|
@@ -52,7 +52,15 @@ const checkStateIsValid = async (req, res, next) => {
|
52 | 52 |
|
53 | 53 | const determineUsername = async (userId, email) => {
|
54 | 54 | 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 | + |
56 | 64 | return username;
|
57 | 65 | } catch (err) {
|
58 | 66 | if (err.code !== templates.userNotFound.code) {
|
|
0 commit comments