From 1c8a00943cff236ca40b2662189102a7851d3b56 Mon Sep 17 00:00:00 2001 From: Allemand Sylvain Date: Mon, 9 Apr 2018 16:49:07 +0200 Subject: authentification oauth2 --- models/users.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'models') diff --git a/models/users.js b/models/users.js index da8ca77c..364f7fd7 100644 --- a/models/users.js +++ b/models/users.js @@ -459,6 +459,17 @@ if (Meteor.isServer) { return user; } + if (user.services.oidc) { + 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.profile = { initials: initials, fullname: user.services.oidc.fullname }; + } + + if (options.from === 'admin') { user.createdThroughApi = true; return user; -- cgit v1.2.3-1-g7c22 From 3e927b4e585d46d2fe66a7cd9a6de69885793302 Mon Sep 17 00:00:00 2001 From: Allemand Sylvain Date: Tue, 10 Apr 2018 11:44:54 +0200 Subject: merge oidc and local account if exists --- models/users.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'models') 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; -- cgit v1.2.3-1-g7c22 From 39312a075e5746ddeccbf3fc22df7177a86ba4d5 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 25 Aug 2018 00:49:02 +0300 Subject: - [OAuth2 Login on Standalone Wekan](https://github.com/wekan/wekan/wiki/OAuth2). For example, Rocket.Chat can provide OAuth2 login to Wekan. Also, if you have Rocket.Chat using LDAP/SAML/Google/etc for logging into Rocket.Chat, then same users can login to Wekan when Rocket.Chat is providing OAuth2 login to Wekan. Thanks to salleman33 and xet7 ! Closes #234 --- models/users.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'models') diff --git a/models/users.js b/models/users.js index 6e83337e..1b1b79e1 100644 --- a/models/users.js +++ b/models/users.js @@ -479,23 +479,20 @@ if (Meteor.isServer) { } if (user.services.oidc) { - var email = user.services.oidc.email.toLowerCase(); - + const email = user.services.oidc.email.toLowerCase(); + user.username = user.services.oidc.username; - 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 }; + 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 - var existingUser = Meteor.users.findOne({$or: [{'emails.address': email}, {'username':user.username}]}); - console.log("user to create : "); - console.log(user); + const existingUser = Meteor.users.findOne({$or: [{'emails.address': email}, {'username':user.username}]}); if (!existingUser) return user; // copy across new service info - var service = _.keys(user.services)[0]; + const service = _.keys(user.services)[0]; existingUser.services[service] = user.services[service]; existingUser.emails = user.emails; existingUser.username = user.username; -- cgit v1.2.3-1-g7c22