diff options
author | Allemand Sylvain <salleman@faddef.math.u-bordeaux1.fr> | 2018-04-10 11:44:54 +0200 |
---|---|---|
committer | Allemand Sylvain <salleman@faddef.math.u-bordeaux1.fr> | 2018-04-10 11:44:54 +0200 |
commit | 3e927b4e585d46d2fe66a7cd9a6de69885793302 (patch) | |
tree | e160203a6b1ad3749cfb24ff3d38378a57dd6185 /models/users.js | |
parent | 1c8a00943cff236ca40b2662189102a7851d3b56 (diff) | |
download | wekan-3e927b4e585d46d2fe66a7cd9a6de69885793302.tar.gz wekan-3e927b4e585d46d2fe66a7cd9a6de69885793302.tar.bz2 wekan-3e927b4e585d46d2fe66a7cd9a6de69885793302.zip |
merge oidc and local account if exists
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/models/users.js b/models/users.js index 364f7fd7..a04021c1 100644 --- a/models/users.js +++ b/models/users.js @@ -460,15 +460,31 @@ if (Meteor.isServer) { } if (user.services.oidc) { + var email = user.services.oidc.email.toLowerCase(); + user.username = user.services.oidc.username; - user.emails = [{ - address: user.services.oidc.email.toLowerCase(), - verified: false, - }]; - const initials = user.services.oidc.fullname.match(/\b[a-zA-Z]/g).join('').toUpperCase(); + user.emails = [{ address: email, + verified: true }]; + var initials = user.services.oidc.fullname.match(/\b[a-zA-Z]/g).join('').toUpperCase(); user.profile = { initials: initials, fullname: user.services.oidc.fullname }; - } + // see if any existing user has this email address or username, otherwise create new + var existingUser = Meteor.users.findOne({$or: [{'emails.address': email}, {'username':user.username}]}); + console.log("user to create : "); + console.log(user); + if (!existingUser) + return user; + + // copy across new service info + var service = _.keys(user.services)[0]; + existingUser.services[service] = user.services[service]; + existingUser.emails = user.emails; + existingUser.username = user.username; + existingUser.profile = user.profile; + + Meteor.users.remove({_id: existingUser._id}); // remove existing record + return existingUser; + } if (options.from === 'admin') { user.createdThroughApi = true; |