From 8ccc3c4e1ea6027570f7b6fe756798d7e2e4a8fe Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Fri, 1 Sep 2023 05:41:13 -0500 Subject: [PATCH] associate auth with login. --- server/api/controllers/access-tokens/exchange.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/server/api/controllers/access-tokens/exchange.js b/server/api/controllers/access-tokens/exchange.js index 00d256ba..73907817 100644 --- a/server/api/controllers/access-tokens/exchange.js +++ b/server/api/controllers/access-tokens/exchange.js @@ -65,6 +65,17 @@ const mergeUserData = (validToken, userInfo) => { const oidcUser = { ...validToken, ...userInfo }; return oidcUser; }; +const getOrCreateUser = async (newUser) => { + const user = await User.findOne({ + where: { + username: newUser.username, + }, + }); + if (user) { + return user; + } + return User.create(newUser).fetch(); +}; module.exports = { inputs: { token: { @@ -110,9 +121,10 @@ module.exports = { sub: oidcUser.sub, }, }).populate('userId'); + let user = identityProviderUser ? identityProviderUser.userId : {}; if (!identityProviderUser) { - user = await User.create(newUser).fetch(); + user = await getOrCreateUser(newUser); await IdentityProviderUser.create({ issuer: oidcUser.iss, sub: oidcUser.sub,