diff --git a/.meteor/versions b/.meteor/versions index d6517147238f..e761f0884db0 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -102,8 +102,8 @@ oauth2@1.1.11 observe-sequence@1.0.15 ordered-dict@1.0.9 ostrio:cookies@2.2.0 -pauli:accounts-linkedin@1.3.1 -pauli:linkedin@1.3.1 +pauli:accounts-linkedin@2.1.2 +pauli:linkedin-oauth@1.1.0 peerlibrary:aws-sdk@2.4.9_1 peerlibrary:blocking@0.5.2 percolate:synced-cron@1.3.2 diff --git a/packages/rocketchat-ui-login/client/login/services.js b/packages/rocketchat-ui-login/client/login/services.js index bf06c57068da..ad5aaea96ed5 100644 --- a/packages/rocketchat-ui-login/client/login/services.js +++ b/packages/rocketchat-ui-login/client/login/services.js @@ -57,6 +57,11 @@ Template.loginServices.helpers({ } }); +const longinMethods = { + 'meteor-developer': 'MeteorDeveloperAccount', + 'linkedin': 'LinkedIn' +}; + Template.loginServices.events({ 'click .external-login'(e) { if (this.service == null || this.service.service == null) { @@ -80,7 +85,7 @@ Template.loginServices.events({ } }); } else { - const loginWithService = `loginWith${ this.service.service === 'meteor-developer' ? 'MeteorDeveloperAccount' : _.capitalize(this.service.service) }`; + const loginWithService = `loginWith${ longinMethods[this.service.service] || _.capitalize(this.service.service) }`; const serviceConfig = this.service.clientConfig || {}; return Meteor[loginWithService](serviceConfig, function(error) { loadingIcon.addClass('hidden'); diff --git a/server/lib/accounts.js b/server/lib/accounts.js index dd31698a69fd..d8f31bb5ba8c 100644 --- a/server/lib/accounts.js +++ b/server/lib/accounts.js @@ -63,8 +63,16 @@ Accounts.onCreateUser(function(options, user = {}) { user.active = !RocketChat.settings.get('Accounts_ManuallyApproveNewUsers'); if (!user.name) { - if (options.profile && options.profile.name) { - user.name = options.profile.name; + if (options.profile) { + if (options.profile.name) { + user.name = options.profile.name; + } else if (options.profile.firstName && options.profile.lastName) { + // LinkedIn format + user.name = `${ options.profile.firstName } ${ options.profile.lastName }`; + } else if (options.profile.firstName) { + // LinkedIn format + user.name = options.profile.firstName; + } } } diff --git a/server/startup/migrations/v091.js b/server/startup/migrations/v091.js index 6becee51f535..3e56a784ba57 100644 --- a/server/startup/migrations/v091.js +++ b/server/startup/migrations/v091.js @@ -1,9 +1,25 @@ RocketChat.Migrations.add({ version: 91, up() { - RocketChat.models.Users.find({}, {username: 1, name: 1}).forEach((user) => { - RocketChat.models.Messages.updateAllNamesByUserId(user._id, user.name); - RocketChat.models.Subscriptions.setRealNameForDirectRoomsWithUsername(user.username, user.name); + const query = { + 'services.linkedin': { + $exists: 1 + }, + $or: [{ + name: { + $exists: 0 + } + }, { + name: null + }] + }; + + RocketChat.models.Users.find(query, {'services.linkedin.firstName': 1, username: 1}).forEach((user) => { + const name = `${ user.services.linkedin.firstName } ${ user.services.linkedin.lastName }`; + + RocketChat.models.Users.setName(user._id, name); + RocketChat.models.Messages.updateAllNamesByUserId(user._id, name); + RocketChat.models.Subscriptions.setRealNameForDirectRoomsWithUsername(user.username, name); }); } });