associate auth with login.

pull/491/head
Jeffrey 2 years ago
parent af9bdda192
commit 8ccc3c4e1e

@ -65,6 +65,17 @@ const mergeUserData = (validToken, userInfo) => {
const oidcUser = { ...validToken, ...userInfo }; const oidcUser = { ...validToken, ...userInfo };
return oidcUser; 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 = { module.exports = {
inputs: { inputs: {
token: { token: {
@ -110,9 +121,10 @@ module.exports = {
sub: oidcUser.sub, sub: oidcUser.sub,
}, },
}).populate('userId'); }).populate('userId');
let user = identityProviderUser ? identityProviderUser.userId : {}; let user = identityProviderUser ? identityProviderUser.userId : {};
if (!identityProviderUser) { if (!identityProviderUser) {
user = await User.create(newUser).fetch(); user = await getOrCreateUser(newUser);
await IdentityProviderUser.create({ await IdentityProviderUser.create({
issuer: oidcUser.iss, issuer: oidcUser.iss,
sub: oidcUser.sub, sub: oidcUser.sub,

Loading…
Cancel
Save