summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-08-25 01:24:02 +0300
committerLauri Ojansivu <x@xet7.org>2018-08-25 01:24:02 +0300
commit5e128583ac536df2a45d124d6cf6d3336be5f7d0 (patch)
treee06e461f1419c4d21f607fc188a1a010d525e059 /models
parentc34b1a9ec5d0637e45e20e5f4f4c4c4b377d4b44 (diff)
parent23c27f9e0769265f5bb1f9d770290afef2dfb316 (diff)
downloadwekan-5e128583ac536df2a45d124d6cf6d3336be5f7d0.tar.gz
wekan-5e128583ac536df2a45d124d6cf6d3336be5f7d0.tar.bz2
wekan-5e128583ac536df2a45d124d6cf6d3336be5f7d0.zip
Merge branch 'devel'
Diffstat (limited to 'models')
-rw-r--r--models/users.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/models/users.js b/models/users.js
index 9b070c43..1b1b79e1 100644
--- a/models/users.js
+++ b/models/users.js
@@ -478,6 +478,30 @@ if (Meteor.isServer) {
return user;
}
+ if (user.services.oidc) {
+ const email = user.services.oidc.email.toLowerCase();
+
+ user.username = user.services.oidc.username;
+ user.emails = [{ address: email, verified: true }];
+ const initials = user.services.oidc.fullname.match(/\b[a-zA-Z]/g).join('').toUpperCase();
+ user.profile = { initials, fullname: user.services.oidc.fullname };
+
+ // see if any existing user has this email address or username, otherwise create new
+ const existingUser = Meteor.users.findOne({$or: [{'emails.address': email}, {'username':user.username}]});
+ if (!existingUser)
+ return user;
+
+ // copy across new service info
+ const 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;
return user;