From e7aae4684dc3d98d073a9500daec17b95166b53e Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 22 Jul 2019 00:53:55 +0530 Subject: [PATCH 1/3] Service Account bugs fixed --- app/lib/server/functions/saveUser.js | 2 +- .../views/serviceAccountSidebarLogin.js | 23 +++++++++++-------- .../server/methods/addServiceAccount.js | 4 ++-- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/lib/server/functions/saveUser.js b/app/lib/server/functions/saveUser.js index 5d1083a15fce..95f8b841b637 100644 --- a/app/lib/server/functions/saveUser.js +++ b/app/lib/server/functions/saveUser.js @@ -31,7 +31,7 @@ function validateUserData(userId, userData) { }); } - if (!userData._id && !hasPermission(userId, 'create-user')) { + if (!userData._id && !hasPermission(userId, 'create-user') && !userData.u) { throw new Meteor.Error('error-action-not-allowed', 'Adding user is not allowed', { method: 'insertOrUpdateUser', action: 'Adding_user', diff --git a/app/service-accounts/client/views/serviceAccountSidebarLogin.js b/app/service-accounts/client/views/serviceAccountSidebarLogin.js index ee652351b48b..a34018748eb3 100644 --- a/app/service-accounts/client/views/serviceAccountSidebarLogin.js +++ b/app/service-accounts/client/views/serviceAccountSidebarLogin.js @@ -1,11 +1,11 @@ import { Meteor } from 'meteor/meteor'; import { ReactiveVar } from 'meteor/reactive-var'; import { Template } from 'meteor/templating'; -import { FlowRouter } from 'meteor/kadira:flow-router'; import { handleError } from '../../../utils'; import FullUser from '../../../models/client/models/FullUser'; import './serviceAccountSidebarLogin.html'; +import { popover } from '../../../ui-utils/client'; Template.serviceAccountSidebarLogin.helpers({ isReady() { @@ -37,17 +37,22 @@ Template.serviceAccountSidebarLogin.events({ if (error) { return handleError(error); } - FlowRouter.go('/home'); - Meteor.loginWithToken(token.token, (err) => { + popover.close(); + Meteor.logout((err) => { if (err) { return handleError(err); } - document.location.reload(true); - if (Meteor.user().u) { - localStorage.setItem('serviceAccountForceLogin', true); - } else { - localStorage.removeItem('serviceAccountForceLogin'); - } + Meteor.loginWithToken(token.token, (err) => { + if (err) { + return handleError(err); + } + // document.location.reload(true); + if (Meteor.user().u) { + localStorage.setItem('serviceAccountForceLogin', true); + } else { + localStorage.removeItem('serviceAccountForceLogin'); + } + }); }); }); }, diff --git a/app/service-accounts/server/methods/addServiceAccount.js b/app/service-accounts/server/methods/addServiceAccount.js index ee763c73068d..4e5ad4de45f3 100644 --- a/app/service-accounts/server/methods/addServiceAccount.js +++ b/app/service-accounts/server/methods/addServiceAccount.js @@ -31,7 +31,7 @@ Meteor.methods({ } if (!checkUsernameAvailability(userData.username)) { - throw new Meteor.Error('error-field-unavailable', `${ _.escape(userData.username) } is already in use :(`, { method: 'addServiceAccount' }); + throw new Meteor.Error('Username_already_exist', `${ _.escape(userData.username) } is already in use :(`, { method: 'addServiceAccount' }); } const user = Meteor.user(); @@ -39,7 +39,7 @@ Meteor.methods({ const limit = settings.get('Service_account_limit'); if (serviceAccounts.count() >= limit) { - throw new Meteor.Error('error-not-allowed', 'Max service account limit reached', { method: 'addServiceAccount' }); + throw new Meteor.Error('service-account-limit-reached', 'Max service account limit reached', { method: 'addServiceAccount' }); } userData.u = { diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 4dce615a4e7f..6228a181998f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2671,6 +2671,7 @@ "Service_account_dashboard": "Service Account Dashboard", "Service_account_description": "Service Accounts are an upgrade to existing user accounts. You can connect to a large number of users using service account with exclusive features such as broadcast message to all your subscribers at once", "Service_account_limit": "Service Accounts per user", + "service-account-limit-reached": "Max service account limit reached", "Service_account_login": "Service Account login", "Service_Accounts_SearchFields": "Fields to consider for service account search", "Service_account_name_placeholder": "Service Account name", From c0ea99e7e7b6455f146b6d8201da767bbb1f34ed Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 22 Jul 2019 00:59:23 +0530 Subject: [PATCH 2/3] Service Account bugs fixed --- app/service-accounts/client/views/serviceAccountSidebarLogin.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/service-accounts/client/views/serviceAccountSidebarLogin.js b/app/service-accounts/client/views/serviceAccountSidebarLogin.js index a34018748eb3..6251e4039731 100644 --- a/app/service-accounts/client/views/serviceAccountSidebarLogin.js +++ b/app/service-accounts/client/views/serviceAccountSidebarLogin.js @@ -46,7 +46,6 @@ Template.serviceAccountSidebarLogin.events({ if (err) { return handleError(err); } - // document.location.reload(true); if (Meteor.user().u) { localStorage.setItem('serviceAccountForceLogin', true); } else { From a9313ad01b8d54c985d1be9b9232548589df8bd9 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 23 Jul 2019 22:48:50 +0530 Subject: [PATCH 3/3] Login bug fixed --- .../client/views/serviceAccountSidebarLogin.js | 8 ++++---- app/ui-sidenav/client/sidebarHeader.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/service-accounts/client/views/serviceAccountSidebarLogin.js b/app/service-accounts/client/views/serviceAccountSidebarLogin.js index 6251e4039731..c0f48151f8d4 100644 --- a/app/service-accounts/client/views/serviceAccountSidebarLogin.js +++ b/app/service-accounts/client/views/serviceAccountSidebarLogin.js @@ -19,10 +19,10 @@ Template.serviceAccountSidebarLogin.helpers({ return Template.instance().users() && Template.instance().users().length > 0; }, owner() { - return Meteor.user().u; + return Meteor.user() && Meteor.user().u; }, showOwnerAccountLink() { - return localStorage.getItem('serviceAccountForceLogin') && !!Meteor.user().u; + return localStorage.getItem('serviceAccountForceLogin') && Meteor.user() && !!Meteor.user().u; }, }); @@ -30,7 +30,7 @@ Template.serviceAccountSidebarLogin.events({ 'click .js-login'(e) { e.preventDefault(); let { username } = this; - if (Meteor.user().u) { + if (Meteor.user() && Meteor.user().u) { username = Meteor.user().u.username; } Meteor.call('getLoginToken', username, function(error, token) { @@ -46,7 +46,7 @@ Template.serviceAccountSidebarLogin.events({ if (err) { return handleError(err); } - if (Meteor.user().u) { + if (Meteor.user() && Meteor.user().u) { localStorage.setItem('serviceAccountForceLogin', true); } else { localStorage.removeItem('serviceAccountForceLogin'); diff --git a/app/ui-sidenav/client/sidebarHeader.js b/app/ui-sidenav/client/sidebarHeader.js index ed2de621991f..cb1d846773ce 100644 --- a/app/ui-sidenav/client/sidebarHeader.js +++ b/app/ui-sidenav/client/sidebarHeader.js @@ -74,7 +74,7 @@ const toolbarButtons = (user) => [{ { name: t('Service_account_login'), icon: 'reload', - condition: () => !Meteor.user().u || (Meteor.user().u && localStorage.getItem('serviceAccountForceLogin')), + condition: () => (Meteor.user() && !Meteor.user().u) || (Meteor.user() && Meteor.user().u && localStorage.getItem('serviceAccountForceLogin')), action: (e) => { const options = []; const config = {