From d23ac2b385d777f6ea22cb0c78557a75ee0018b1 Mon Sep 17 00:00:00 2001 From: Nicu Tofan Date: Wed, 27 Jun 2018 15:30:52 +0300 Subject: Restore invitation code logic --- client/components/settings/invitationCode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/invitationCode.js b/client/components/settings/invitationCode.js index c02f860f..a403d8ab 100644 --- a/client/components/settings/invitationCode.js +++ b/client/components/settings/invitationCode.js @@ -1,6 +1,6 @@ Template.invitationCode.onRendered(() => { const setting = Settings.findOne(); - if (setting || setting.disableRegistration) { + if (!setting || !setting.disableRegistration) { $('#invitationcode').hide(); } }); -- cgit v1.2.3-1-g7c22 From 980fd4f61e0fb8086e1ffc9bc5e73c294b5febe4 Mon Sep 17 00:00:00 2001 From: Akuket <32392661+Akuket@users.noreply.github.com> Date: Mon, 16 Jul 2018 12:51:18 +0200 Subject: Patch Invitation Code --- client/components/settings/invitationCode.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/invitationCode.js b/client/components/settings/invitationCode.js index a403d8ab..ce2e9a5b 100644 --- a/client/components/settings/invitationCode.js +++ b/client/components/settings/invitationCode.js @@ -1,6 +1,13 @@ -Template.invitationCode.onRendered(() => { - const setting = Settings.findOne(); - if (!setting || !setting.disableRegistration) { - $('#invitationcode').hide(); - } +Template.invitationCode.onRendered(function() { + Meteor.subscribe('setting', { + onReady : function() { + const setting = Settings.findOne(); + + if (!setting || !setting.disableRegistration) { + $('#invitationcode').hide(); + } + + return this.stop(); + } + }); }); -- cgit v1.2.3-1-g7c22 From 1b32509496f14d2d10a598a7005de6d6ced054ca Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 16 Jul 2018 14:46:33 +0300 Subject: Fix lint errors. --- client/components/settings/invitationCode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/invitationCode.js b/client/components/settings/invitationCode.js index ce2e9a5b..fa355179 100644 --- a/client/components/settings/invitationCode.js +++ b/client/components/settings/invitationCode.js @@ -1,6 +1,6 @@ Template.invitationCode.onRendered(function() { Meteor.subscribe('setting', { - onReady : function() { + onReady() { const setting = Settings.findOne(); if (!setting || !setting.disableRegistration) { @@ -8,6 +8,6 @@ Template.invitationCode.onRendered(function() { } return this.stop(); - } + }, }); }); -- cgit v1.2.3-1-g7c22 From df54f15ecb36e105ad2116443672c99d52569958 Mon Sep 17 00:00:00 2001 From: guillaume Date: Mon, 16 Jul 2018 19:20:47 +0200 Subject: patch re-invit --- client/components/settings/settingBody.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 7230d893..ff563fc1 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -82,6 +82,7 @@ BlazeComponent.extendComponent({ }, inviteThroughEmail() { + /* eslint-disable no-console */ const emails = $('#email-to-invite').val().trim().split('\n').join(',').split(','); const boardsToInvite = []; $('.js-toggle-board-choose .materialCheckBox.is-checked').each(function () { @@ -99,9 +100,11 @@ BlazeComponent.extendComponent({ // if (!err) { // TODO - show more info to user // } + this.setLoading(false); }); } + /* eslint-enable no-console */ }, saveMailServerInfo() { -- cgit v1.2.3-1-g7c22 From bf5596b20182628a6a9285c86a239b1f61b96fdf Mon Sep 17 00:00:00 2001 From: Akuket <32392661+Akuket@users.noreply.github.com> Date: Tue, 17 Jul 2018 16:07:46 +0200 Subject: patch re invit --- client/components/settings/settingBody.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index ff563fc1..6a69fcb6 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -82,7 +82,6 @@ BlazeComponent.extendComponent({ }, inviteThroughEmail() { - /* eslint-disable no-console */ const emails = $('#email-to-invite').val().trim().split('\n').join(',').split(','); const boardsToInvite = []; $('.js-toggle-board-choose .materialCheckBox.is-checked').each(function () { @@ -104,7 +103,6 @@ BlazeComponent.extendComponent({ this.setLoading(false); }); } - /* eslint-enable no-console */ }, saveMailServerInfo() { -- cgit v1.2.3-1-g7c22 From a8f41f7994b0c3a43aa4b82be06d35911eacab4d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 18 Jul 2018 00:46:45 +0300 Subject: Remove SMTP settings from Admin Panel, because they are set in environment variable settings like source/snap/docker already, and password was exposed in plain text. Thanks to xet7 ! Closes #1783 --- client/components/settings/settingBody.jade | 34 ----------------------------- client/components/settings/settingBody.js | 13 ++++++++--- 2 files changed, 10 insertions(+), 37 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 5bc7972d..1832894c 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -55,40 +55,6 @@ template(name="general") template(name='email') ul#email-setting.setting-detail - li.smtp-form - .title {{_ 'smtp-host'}} - .description {{_ 'smtp-host-description'}} - .form-group - input.form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}") - li.smtp-form - .title {{_ 'smtp-port'}} - .description {{_ 'smtp-port-description'}} - .form-group - input.form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}") - li.smtp-form - .title {{_ 'smtp-username'}} - .form-group - input.form-control#mail-server-username(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}") - li.smtp-form - .title {{_ 'smtp-password'}} - .form-group - input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}") - li.smtp-form - .title {{_ 'smtp-tls'}} - .form-group - a.flex.js-toggle-tls - .materialCheckBox#mail-server-tls(class="{{#if currentSetting.mailServer.enableTLS}}is-checked{{/if}}") - - span {{_ 'smtp-tls-description'}} - - li.smtp-form - .title {{_ 'send-from'}} - .form-group - input.form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}") - - li - button.js-save.primary {{_ 'save'}} - li button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 7230d893..5995cbf1 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -20,7 +20,7 @@ BlazeComponent.extendComponent({ setLoading(w) { this.loading.set(w); }, - + /* checkField(selector) { const value = $(selector).val(); if (!value || value.trim() === '') { @@ -30,7 +30,7 @@ BlazeComponent.extendComponent({ return value; } }, - +*/ currentSetting() { return Settings.findOne(); }, @@ -55,9 +55,11 @@ BlazeComponent.extendComponent({ $('.invite-people').slideDown(); } }, + /* toggleTLS() { $('#mail-server-tls').toggleClass('is-checked'); }, +*/ switchMenu(event) { const target = $(event.target); if (!target.hasClass('active')) { @@ -104,6 +106,7 @@ BlazeComponent.extendComponent({ } }, + /* saveMailServerInfo() { this.setLoading(true); $('li').removeClass('has-error'); @@ -128,7 +131,7 @@ BlazeComponent.extendComponent({ } }, - +*/ sendSMTPTestEmail() { Meteor.call('sendSMTPTestEmail', (err, ret) => { if (!err && ret) { /* eslint-disable no-console */ @@ -148,11 +151,15 @@ BlazeComponent.extendComponent({ events() { return [{ 'click a.js-toggle-registration': this.toggleRegistration, + /* 'click a.js-toggle-tls': this.toggleTLS, +*/ 'click a.js-setting-menu': this.switchMenu, 'click a.js-toggle-board-choose': this.checkBoard, 'click button.js-email-invite': this.inviteThroughEmail, + /* 'click button.js-save': this.saveMailServerInfo, +*/ 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, }]; }, -- cgit v1.2.3-1-g7c22 From b216c63c132e587e590e5faa0285ca5ca2641765 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 20 Aug 2018 23:16:24 +0300 Subject: - Restored SMTP settings at Admin Panel, and disabled showing password. Thanks to xet7 ! Closes #1790 --- client/components/settings/settingBody.jade | 34 +++++++++++++++++++++++++++++ client/components/settings/settingBody.js | 14 +++--------- 2 files changed, 37 insertions(+), 11 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 1832894c..dcf71f4d 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -55,6 +55,40 @@ template(name="general") template(name='email') ul#email-setting.setting-detail + li.smtp-form + .title {{_ 'smtp-host'}} + .description {{_ 'smtp-host-description'}} + .form-group + input.form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}") + li.smtp-form + .title {{_ 'smtp-port'}} + .description {{_ 'smtp-port-description'}} + .form-group + input.form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}") + li.smtp-form + .title {{_ 'smtp-username'}} + .form-group + input.form-control#mail-server-username(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}") + li.smtp-form + .title {{_ 'smtp-password'}} + .form-group + input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="") + li.smtp-form + .title {{_ 'smtp-tls'}} + .form-group + a.flex.js-toggle-tls + .materialCheckBox#mail-server-tls(class="{{#if currentSetting.mailServer.enableTLS}}is-checked{{/if}}") + + span {{_ 'smtp-tls-description'}} + + li.smtp-form + .title {{_ 'send-from'}} + .form-group + input.form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}") + + li + button.js-save.primary {{_ 'save'}} + li button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index de96c100..7230d893 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -20,7 +20,7 @@ BlazeComponent.extendComponent({ setLoading(w) { this.loading.set(w); }, - /* + checkField(selector) { const value = $(selector).val(); if (!value || value.trim() === '') { @@ -30,7 +30,7 @@ BlazeComponent.extendComponent({ return value; } }, -*/ + currentSetting() { return Settings.findOne(); }, @@ -55,11 +55,9 @@ BlazeComponent.extendComponent({ $('.invite-people').slideDown(); } }, - /* toggleTLS() { $('#mail-server-tls').toggleClass('is-checked'); }, -*/ switchMenu(event) { const target = $(event.target); if (!target.hasClass('active')) { @@ -101,13 +99,11 @@ BlazeComponent.extendComponent({ // if (!err) { // TODO - show more info to user // } - this.setLoading(false); }); } }, - /* saveMailServerInfo() { this.setLoading(true); $('li').removeClass('has-error'); @@ -132,7 +128,7 @@ BlazeComponent.extendComponent({ } }, -*/ + sendSMTPTestEmail() { Meteor.call('sendSMTPTestEmail', (err, ret) => { if (!err && ret) { /* eslint-disable no-console */ @@ -152,15 +148,11 @@ BlazeComponent.extendComponent({ events() { return [{ 'click a.js-toggle-registration': this.toggleRegistration, - /* 'click a.js-toggle-tls': this.toggleTLS, -*/ 'click a.js-setting-menu': this.switchMenu, 'click a.js-toggle-board-choose': this.checkBoard, 'click button.js-email-invite': this.inviteThroughEmail, - /* 'click button.js-save': this.saveMailServerInfo, -*/ 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, }]; }, -- cgit v1.2.3-1-g7c22 From 288800eafc91d07f859c4f59588e0b646137ccb9 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 3 Oct 2018 11:50:52 +0300 Subject: - Add LDAP. In progress. Thanks to maximest-pierre, Akuket and xet. Related #119 --- client/components/settings/connectionMethod.jade | 6 +++++ client/components/settings/connectionMethod.js | 34 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 client/components/settings/connectionMethod.jade create mode 100644 client/components/settings/connectionMethod.js (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade new file mode 100644 index 00000000..598dd9dd --- /dev/null +++ b/client/components/settings/connectionMethod.jade @@ -0,0 +1,6 @@ +template(name='connectionMethod') + div.at-form-connection + label Authentication method + select.select-connection + each connections + option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js new file mode 100644 index 00000000..4983a3ef --- /dev/null +++ b/client/components/settings/connectionMethod.js @@ -0,0 +1,34 @@ +Template.connectionMethod.onCreated(function() { + this.connectionMethods = new ReactiveVar([]); + + Meteor.call('getConnectionsEnabled', (_, result) => { + if (result) { + // TODO : add a management of different languages + // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) + this.connectionMethods.set([ + {value: 'default'}, + // Gets only the connection methods availables + ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), + ]); + } + + // If only the default authentication available, hides the select boxe + const content = $('.at-form-connection'); + if (!(this.connectionMethods.get().length > 1)) { + content.hide(); + } else { + content.show(); + } + }); +}); + +Template.connectionMethod.onRendered(() => { + // Moves the select boxe in the first place of the at-pwd-form div + $('.at-form-connection').detach().prependTo('.at-pwd-form'); +}); + +Template.connectionMethod.helpers({ + connections() { + return Template.instance().connectionMethods.get(); + }, +}); -- cgit v1.2.3-1-g7c22 From 3b4f285fea4a90ee96bfce855e1539adcec9b7aa Mon Sep 17 00:00:00 2001 From: guillaume Date: Tue, 9 Oct 2018 14:14:39 +0200 Subject: add ldap support | simplify authentications --- client/components/settings/connectionMethod.jade | 8 +++--- client/components/settings/connectionMethod.js | 22 ++++++++--------- client/components/settings/peopleBody.jade | 22 ++++++++++++++--- client/components/settings/peopleBody.js | 31 ++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 18 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade index 598dd9dd..ac4c8c64 100644 --- a/client/components/settings/connectionMethod.jade +++ b/client/components/settings/connectionMethod.jade @@ -1,6 +1,6 @@ template(name='connectionMethod') - div.at-form-connection - label Authentication method - select.select-connection - each connections + div.at-form-authentication + label {{_ 'authentication-method'}} + select.select-authentication + each authentications option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js index 4983a3ef..3d5cfd76 100644 --- a/client/components/settings/connectionMethod.js +++ b/client/components/settings/connectionMethod.js @@ -1,20 +1,20 @@ Template.connectionMethod.onCreated(function() { - this.connectionMethods = new ReactiveVar([]); + this.authenticationMethods = new ReactiveVar([]); - Meteor.call('getConnectionsEnabled', (_, result) => { + Meteor.call('getAuthenticationsEnabled', (_, result) => { if (result) { // TODO : add a management of different languages // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) - this.connectionMethods.set([ - {value: 'default'}, - // Gets only the connection methods availables + this.authenticationMethods.set([ + {value: 'password'}, + // Gets only the authentication methods availables ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), ]); } // If only the default authentication available, hides the select boxe - const content = $('.at-form-connection'); - if (!(this.connectionMethods.get().length > 1)) { + const content = $('.at-form-authentication'); + if (!(this.authenticationMethods.get().length > 1)) { content.hide(); } else { content.show(); @@ -24,11 +24,11 @@ Template.connectionMethod.onCreated(function() { Template.connectionMethod.onRendered(() => { // Moves the select boxe in the first place of the at-pwd-form div - $('.at-form-connection').detach().prependTo('.at-pwd-form'); + $('.at-form-authentication').detach().prependTo('.at-pwd-form'); }); Template.connectionMethod.helpers({ - connections() { - return Template.instance().connectionMethods.get(); + authentications() { + return Template.instance().authenticationMethods.get(); }, -}); +}); \ No newline at end of file diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index a3506a24..4d06637e 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -27,6 +27,7 @@ template(name="peopleGeneral") th {{_ 'verified'}} th {{_ 'createdAt'}} th {{_ 'active'}} + th {{_ 'authentication-method'}} th each user in peopleList +peopleRow(userId=user._id) @@ -52,6 +53,7 @@ template(name="peopleRow") | {{_ 'no'}} else | {{_ 'yes'}} + td {{_ userData.authenticationMethod }} td a.edit-user | {{_ 'edit'}} @@ -66,12 +68,18 @@ template(name="editUserPopup") | {{_ 'username'}} span.error.hide.username-taken | {{_ 'error-username-taken'}} - input.js-profile-username(type="text" value=user.username) + if isLdap + input.js-profile-username(type="text" value=user.username readonly) + else + input.js-profile-username(type="text" value=user.username) label | {{_ 'email'}} span.error.hide.email-taken | {{_ 'error-email-taken'}} - input.js-profile-email(type="email" value="{{user.emails.[0].address}}") + if isLdap + input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly) + else + input.js-profile-email(type="email" value="{{user.emails.[0].address}}") label | {{_ 'admin'}} select.select-role.js-profile-isadmin @@ -82,9 +90,17 @@ template(name="editUserPopup") select.select-active.js-profile-isactive option(value="false") {{_ 'yes'}} option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}} + label + | {{_ 'authentication-type'}} + select.select-authenticationMethod.js-authenticationMethod + each authentications + if isSelected value + option(value="{{value}}" selected) {{_ value}} + else + option(value="{{value}}") {{_ value}} hr label | {{_ 'password'}} input.js-profile-password(type="password") - input.primary.wide(type="submit" value="{{_ 'save'}}") + input.primary.wide(type="submit" value="{{_ 'save'}}") \ No newline at end of file diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index 7cc992f2..acc94081 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -62,10 +62,39 @@ Template.peopleRow.helpers({ }, }); +Template.editUserPopup.onCreated(function() { + this.authenticationMethods = new ReactiveVar([]); + + Meteor.call('getAuthenticationsEnabled', (_, result) => { + if (result) { + // TODO : add a management of different languages + // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) + this.authenticationMethods.set([ + {value: 'password'}, + // Gets only the authentication methods availables + ...Object.entries(result).filter(e => e[1]).map(e => ({value: e[0]})), + ]); + } + }); +}); + Template.editUserPopup.helpers({ user() { return Users.findOne(this.userId); }, + authentications() { + return Template.instance().authenticationMethods.get(); + }, + isSelected(match) { + const userId = Template.instance().data.userId; + const selected = Users.findOne(userId).authenticationMethod; + return selected === match; + }, + isLdap() { + const userId = Template.instance().data.userId; + const selected = Users.findOne(userId).authenticationMethod; + return selected === 'ldap'; + } }); BlazeComponent.extendComponent({ @@ -91,6 +120,7 @@ Template.editUserPopup.events({ const isAdmin = tpl.find('.js-profile-isadmin').value.trim(); const isActive = tpl.find('.js-profile-isactive').value.trim(); const email = tpl.find('.js-profile-email').value.trim(); + const authentication = tpl.find('.js-authenticationMethod').value.trim(); const isChangePassword = password.length > 0; const isChangeUserName = username !== user.username; @@ -101,6 +131,7 @@ Template.editUserPopup.events({ 'profile.fullname': fullname, 'isAdmin': isAdmin === 'true', 'loginDisabled': isActive === 'true', + 'authenticationMethod': authentication }, }); -- cgit v1.2.3-1-g7c22 From 3a7ae7c5f240287a4fc58eb3a321129be718d40c Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 9 Oct 2018 21:16:47 +0300 Subject: Fix lint errors. --- client/components/settings/connectionMethod.js | 2 +- client/components/settings/peopleBody.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js index 3d5cfd76..9fe8f382 100644 --- a/client/components/settings/connectionMethod.js +++ b/client/components/settings/connectionMethod.js @@ -31,4 +31,4 @@ Template.connectionMethod.helpers({ authentications() { return Template.instance().authenticationMethods.get(); }, -}); \ No newline at end of file +}); diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index acc94081..a4d70974 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -67,12 +67,12 @@ Template.editUserPopup.onCreated(function() { Meteor.call('getAuthenticationsEnabled', (_, result) => { if (result) { - // TODO : add a management of different languages + // TODO : add a management of different languages // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) this.authenticationMethods.set([ {value: 'password'}, // Gets only the authentication methods availables - ...Object.entries(result).filter(e => e[1]).map(e => ({value: e[0]})), + ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), ]); } }); @@ -94,7 +94,7 @@ Template.editUserPopup.helpers({ const userId = Template.instance().data.userId; const selected = Users.findOne(userId).authenticationMethod; return selected === 'ldap'; - } + }, }); BlazeComponent.extendComponent({ @@ -131,7 +131,7 @@ Template.editUserPopup.events({ 'profile.fullname': fullname, 'isAdmin': isAdmin === 'true', 'loginDisabled': isActive === 'true', - 'authenticationMethod': authentication + 'authenticationMethod': authentication, }, }); -- cgit v1.2.3-1-g7c22 From 4cb25a5bcf5263f9c803a0a1d4ceaf6a9e5db75f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 24 Oct 2018 11:39:45 +0300 Subject: - Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7 ! - Fix LDAP User Search Scope. Thanks to Vnimos and Akuket ! Related #119 - Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7 ! Closes #1856 --- client/components/settings/settingBody.jade | 16 +++++++++++++++- client/components/settings/settingBody.js | 22 ++++++++++++++++++++++ client/components/settings/settingBody.styl | 3 ++- 3 files changed, 39 insertions(+), 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index dcf71f4d..a05be1c6 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -16,6 +16,8 @@ template(name="setting") a.js-setting-menu(data-id="account-setting") {{_ 'accounts'}} li a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}} + li + a.js-setting-menu(data-id="layout-setting") {{_ 'layout'}} .main-body if loading.get +spinner @@ -27,6 +29,8 @@ template(name="setting") +accountSettings else if announcementSetting.get +announcementSettings + else if layoutSetting.get + +layoutSettings template(name="general") ul#registration-setting.setting-detail @@ -72,7 +76,7 @@ template(name='email') li.smtp-form .title {{_ 'smtp-password'}} .form-group - input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="") + input.form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}") li.smtp-form .title {{_ 'smtp-tls'}} .form-group @@ -127,3 +131,13 @@ template(name='announcementSettings') textarea#admin-announcement.form-control= currentSetting.body li button.js-announcement-save.primary {{_ 'save'}} + +template(name='layoutSettings') + ul#layout-setting.setting-detail + li.layout-form + .title {{_ 'custom-product-name'}} + .form-group + input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}") + + li + button.js-save-layout.primary {{_ 'save'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 7230d893..0ff4f99c 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -6,6 +6,7 @@ BlazeComponent.extendComponent({ this.emailSetting = new ReactiveVar(false); this.accountSetting = new ReactiveVar(false); this.announcementSetting = new ReactiveVar(false); + this.layoutSetting = new ReactiveVar(false); Meteor.subscribe('setting'); Meteor.subscribe('mailServer'); @@ -68,6 +69,7 @@ BlazeComponent.extendComponent({ this.emailSetting.set('email-setting' === targetID); this.accountSetting.set('account-setting' === targetID); this.announcementSetting.set('announcement-setting' === targetID); + this.layoutSetting.set('layout-setting' === targetID); } }, @@ -129,6 +131,25 @@ BlazeComponent.extendComponent({ }, + saveLayout() { + this.setLoading(true); + $('li').removeClass('has-error'); + + try { + const productName = $('#product-name').val().trim(); + Settings.update(Settings.findOne()._id, { + $set: { + 'productName': productName, + }, + }); + } catch (e) { + return; + } finally { + this.setLoading(false); + } + + }, + sendSMTPTestEmail() { Meteor.call('sendSMTPTestEmail', (err, ret) => { if (!err && ret) { /* eslint-disable no-console */ @@ -154,6 +175,7 @@ BlazeComponent.extendComponent({ 'click button.js-email-invite': this.inviteThroughEmail, 'click button.js-save': this.saveMailServerInfo, 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, + 'click button.js-save-layout': this.saveLayout, }]; }, }).register('setting'); diff --git a/client/components/settings/settingBody.styl b/client/components/settings/settingBody.styl index fec64cee..7f8bd4c0 100644 --- a/client/components/settings/settingBody.styl +++ b/client/components/settings/settingBody.styl @@ -66,7 +66,8 @@ padding: 0 0.5rem .admin-announcement, - .invite-people + .invite-people, + .layout padding-left 20px; li min-width: 500px; -- cgit v1.2.3-1-g7c22 From 90a0478d0b7ada2347e3a2f4c211507427a1673e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 24 Oct 2018 12:13:20 +0300 Subject: - Fix lint error. Thanks to xet7 ! --- client/components/settings/settingBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 0ff4f99c..4ad65400 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -139,7 +139,7 @@ BlazeComponent.extendComponent({ const productName = $('#product-name').val().trim(); Settings.update(Settings.findOne()._id, { $set: { - 'productName': productName, + productName, }, }); } catch (e) { -- cgit v1.2.3-1-g7c22 From 8c497efb46d2193674fee2e0c9da8053c533e79e Mon Sep 17 00:00:00 2001 From: guillaume Date: Tue, 6 Nov 2018 11:28:35 +0100 Subject: patch authentication --- client/components/settings/connectionMethod.jade | 6 ----- client/components/settings/connectionMethod.js | 34 ------------------------ 2 files changed, 40 deletions(-) delete mode 100644 client/components/settings/connectionMethod.jade delete mode 100644 client/components/settings/connectionMethod.js (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade deleted file mode 100644 index ac4c8c64..00000000 --- a/client/components/settings/connectionMethod.jade +++ /dev/null @@ -1,6 +0,0 @@ -template(name='connectionMethod') - div.at-form-authentication - label {{_ 'authentication-method'}} - select.select-authentication - each authentications - option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js deleted file mode 100644 index 9fe8f382..00000000 --- a/client/components/settings/connectionMethod.js +++ /dev/null @@ -1,34 +0,0 @@ -Template.connectionMethod.onCreated(function() { - this.authenticationMethods = new ReactiveVar([]); - - Meteor.call('getAuthenticationsEnabled', (_, result) => { - if (result) { - // TODO : add a management of different languages - // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) - this.authenticationMethods.set([ - {value: 'password'}, - // Gets only the authentication methods availables - ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), - ]); - } - - // If only the default authentication available, hides the select boxe - const content = $('.at-form-authentication'); - if (!(this.authenticationMethods.get().length > 1)) { - content.hide(); - } else { - content.show(); - } - }); -}); - -Template.connectionMethod.onRendered(() => { - // Moves the select boxe in the first place of the at-pwd-form div - $('.at-form-authentication').detach().prependTo('.at-pwd-form'); -}); - -Template.connectionMethod.helpers({ - authentications() { - return Template.instance().authenticationMethods.get(); - }, -}); -- cgit v1.2.3-1-g7c22 From aa691b0af105c8dbc5443b1e0823a701e53c3871 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 17 Nov 2018 16:50:42 +0200 Subject: - Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004). Thanks to xet7 ! Closes #2004 --- client/components/settings/connectionMethod.jade | 6 +++++ client/components/settings/connectionMethod.js | 34 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 client/components/settings/connectionMethod.jade create mode 100644 client/components/settings/connectionMethod.js (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade new file mode 100644 index 00000000..ac4c8c64 --- /dev/null +++ b/client/components/settings/connectionMethod.jade @@ -0,0 +1,6 @@ +template(name='connectionMethod') + div.at-form-authentication + label {{_ 'authentication-method'}} + select.select-authentication + each authentications + option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js new file mode 100644 index 00000000..9fe8f382 --- /dev/null +++ b/client/components/settings/connectionMethod.js @@ -0,0 +1,34 @@ +Template.connectionMethod.onCreated(function() { + this.authenticationMethods = new ReactiveVar([]); + + Meteor.call('getAuthenticationsEnabled', (_, result) => { + if (result) { + // TODO : add a management of different languages + // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) + this.authenticationMethods.set([ + {value: 'password'}, + // Gets only the authentication methods availables + ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), + ]); + } + + // If only the default authentication available, hides the select boxe + const content = $('.at-form-authentication'); + if (!(this.authenticationMethods.get().length > 1)) { + content.hide(); + } else { + content.show(); + } + }); +}); + +Template.connectionMethod.onRendered(() => { + // Moves the select boxe in the first place of the at-pwd-form div + $('.at-form-authentication').detach().prependTo('.at-pwd-form'); +}); + +Template.connectionMethod.helpers({ + authentications() { + return Template.instance().authenticationMethods.get(); + }, +}); -- cgit v1.2.3-1-g7c22 From dd6ba152a0b38950f82ec98fbe51fb746c402615 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 20 Nov 2018 02:38:00 +0200 Subject: Admin Panel / Layout: Hide Logo: Yes / No. This does hide Wekan logo on Login page and Board page. Thanks to xet7. --- client/components/settings/settingBody.jade | 8 +++++++- client/components/settings/settingBody.js | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index a05be1c6..bc6e0f50 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -134,10 +134,16 @@ template(name='announcementSettings') template(name='layoutSettings') ul#layout-setting.setting-detail + li.layout-form + .title {{_ 'hide-logo'}} + .form-group.flex + input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}") + span {{_ 'yes'}} + input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}") + span {{_ 'no'}} li.layout-form .title {{_ 'custom-product-name'}} .form-group input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}") - li button.js-save-layout.primary {{_ 'save'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 4ad65400..5bebc8d0 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -59,6 +59,9 @@ BlazeComponent.extendComponent({ toggleTLS() { $('#mail-server-tls').toggleClass('is-checked'); }, + toggleHideLogo() { + $('#hide-logo').toggleClass('is-checked'); + }, switchMenu(event) { const target = $(event.target); if (!target.hasClass('active')) { @@ -135,11 +138,15 @@ BlazeComponent.extendComponent({ this.setLoading(true); $('li').removeClass('has-error'); + const productName = $('#product-name').val().trim(); + const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true'); + try { - const productName = $('#product-name').val().trim(); + Settings.update(Settings.findOne()._id, { $set: { productName, + hideLogo: hideLogoChange, }, }); } catch (e) { @@ -175,6 +182,7 @@ BlazeComponent.extendComponent({ 'click button.js-email-invite': this.inviteThroughEmail, 'click button.js-save': this.saveMailServerInfo, 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, + 'click a.js-toggle-hide-logo': this.toggleHideLogo, 'click button.js-save-layout': this.saveLayout, }]; }, -- cgit v1.2.3-1-g7c22 From f0232fb5cb0f2a890f346f2a0e7277c826244266 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Tue, 20 Nov 2018 11:35:14 +0200 Subject: - Fix: When saving Admin Panel / Layout, save also SMTP settings. Thanks to xet7 ! --- client/components/settings/settingBody.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 5bebc8d0..ddb4cd0f 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -155,6 +155,8 @@ BlazeComponent.extendComponent({ this.setLoading(false); } + saveMailServerInfo(); + }, sendSMTPTestEmail() { -- cgit v1.2.3-1-g7c22 From dbb1a86ca377e551063cc04c5189fad4aa9148c0 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 15 Dec 2018 20:39:01 +0200 Subject: - Admin Panel / Layout / Custom Product Name now changes webpage title. Thanks to xet7 ! Related #1196 --- client/components/settings/settingBody.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index ddb4cd0f..3f6f36f4 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -155,6 +155,8 @@ BlazeComponent.extendComponent({ this.setLoading(false); } + DocHead.setTitle(productName); + saveMailServerInfo(); }, -- cgit v1.2.3-1-g7c22 From ab031d9da134aa13490a26dbe97ad2d7d01d534a Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 15 Dec 2018 21:55:20 +0200 Subject: - Remove not working duplicate saveMailServerInfo, to remove error from browser dev tools console. Thanks to xet7 ! --- client/components/settings/settingBody.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 3f6f36f4..ba5b4f47 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -157,8 +157,6 @@ BlazeComponent.extendComponent({ DocHead.setTitle(productName); - saveMailServerInfo(); - }, sendSMTPTestEmail() { -- cgit v1.2.3-1-g7c22 From 78e88f4c427d942f643e3740e9f2216e6630915d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 16 Dec 2018 18:36:50 +0200 Subject: - Remove Wekan_version translation string. Thanks to xet7 ! --- client/components/settings/informationBody.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/informationBody.jade b/client/components/settings/informationBody.jade index 53907513..feb7c0dc 100644 --- a/client/components/settings/informationBody.jade +++ b/client/components/settings/informationBody.jade @@ -17,7 +17,7 @@ template(name='statistics') table tbody tr - th {{_ 'Wekan_version'}} + th Wekan {{_ 'info'}} td {{statistics.version}} tr th {{_ 'Node_version'}} -- cgit v1.2.3-1-g7c22 From f1ed6304a4c3bfcd1c778b0c43cafe6808829286 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sun, 16 Dec 2018 22:21:16 +0200 Subject: - Admin Panel / Layout / Custom HTML after start, and Custom HTML before end. In progress, does not work yet. Thanks to xet7 ! --- client/components/settings/settingBody.jade | 6 ++++++ client/components/settings/settingBody.js | 4 ++++ 2 files changed, 10 insertions(+) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index bc6e0f50..153649fc 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -145,5 +145,11 @@ template(name='layoutSettings') .title {{_ 'custom-product-name'}} .form-group input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}") + li.layout-form + .title {{_ 'add-custom-html-after-body-start'}} + textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart + li.layout-form + .title {{_ 'add-custom-html-before-body-end'}} + textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd li button.js-save-layout.primary {{_ 'save'}} diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index ba5b4f47..4f07c84c 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -140,6 +140,8 @@ BlazeComponent.extendComponent({ const productName = $('#product-name').val().trim(); const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true'); + const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim(); + const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim(); try { @@ -147,6 +149,8 @@ BlazeComponent.extendComponent({ $set: { productName, hideLogo: hideLogoChange, + customHTMLafterBodyStart, + customHTMLbeforeBodyEnd, }, }); } catch (e) { -- cgit v1.2.3-1-g7c22 From 72e905675da64d403c2b9a5c51deb01d9084af85 Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 13:41:21 +0100 Subject: Removes the dropdown for the authentication method --- client/components/settings/connectionMethod.jade | 6 ----- client/components/settings/connectionMethod.js | 34 ------------------------ 2 files changed, 40 deletions(-) delete mode 100644 client/components/settings/connectionMethod.jade delete mode 100644 client/components/settings/connectionMethod.js (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade deleted file mode 100644 index ac4c8c64..00000000 --- a/client/components/settings/connectionMethod.jade +++ /dev/null @@ -1,6 +0,0 @@ -template(name='connectionMethod') - div.at-form-authentication - label {{_ 'authentication-method'}} - select.select-authentication - each authentications - option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js deleted file mode 100644 index 9fe8f382..00000000 --- a/client/components/settings/connectionMethod.js +++ /dev/null @@ -1,34 +0,0 @@ -Template.connectionMethod.onCreated(function() { - this.authenticationMethods = new ReactiveVar([]); - - Meteor.call('getAuthenticationsEnabled', (_, result) => { - if (result) { - // TODO : add a management of different languages - // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) - this.authenticationMethods.set([ - {value: 'password'}, - // Gets only the authentication methods availables - ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), - ]); - } - - // If only the default authentication available, hides the select boxe - const content = $('.at-form-authentication'); - if (!(this.authenticationMethods.get().length > 1)) { - content.hide(); - } else { - content.show(); - } - }); -}); - -Template.connectionMethod.onRendered(() => { - // Moves the select boxe in the first place of the at-pwd-form div - $('.at-form-authentication').detach().prependTo('.at-pwd-form'); -}); - -Template.connectionMethod.helpers({ - authentications() { - return Template.instance().authenticationMethods.get(); - }, -}); -- cgit v1.2.3-1-g7c22 From c502ab95009fc5814f1b96b45c6503313551578d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 24 Dec 2018 18:18:41 +0200 Subject: - Revert "Improve authentication" and "Default Authentication Method" to make login work again. - Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work. Most likely Meteor 1.8.x version is still broken. Thanks to xet7 ! --- client/components/settings/connectionMethod.jade | 6 +++++ client/components/settings/connectionMethod.js | 34 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 client/components/settings/connectionMethod.jade create mode 100644 client/components/settings/connectionMethod.js (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade new file mode 100644 index 00000000..ac4c8c64 --- /dev/null +++ b/client/components/settings/connectionMethod.jade @@ -0,0 +1,6 @@ +template(name='connectionMethod') + div.at-form-authentication + label {{_ 'authentication-method'}} + select.select-authentication + each authentications + option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js new file mode 100644 index 00000000..9fe8f382 --- /dev/null +++ b/client/components/settings/connectionMethod.js @@ -0,0 +1,34 @@ +Template.connectionMethod.onCreated(function() { + this.authenticationMethods = new ReactiveVar([]); + + Meteor.call('getAuthenticationsEnabled', (_, result) => { + if (result) { + // TODO : add a management of different languages + // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) + this.authenticationMethods.set([ + {value: 'password'}, + // Gets only the authentication methods availables + ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), + ]); + } + + // If only the default authentication available, hides the select boxe + const content = $('.at-form-authentication'); + if (!(this.authenticationMethods.get().length > 1)) { + content.hide(); + } else { + content.show(); + } + }); +}); + +Template.connectionMethod.onRendered(() => { + // Moves the select boxe in the first place of the at-pwd-form div + $('.at-form-authentication').detach().prependTo('.at-pwd-form'); +}); + +Template.connectionMethod.helpers({ + authentications() { + return Template.instance().authenticationMethods.get(); + }, +}); -- cgit v1.2.3-1-g7c22 From c2118f4830020631ab228c59c8b9247a13655ae6 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 1 Feb 2019 19:00:44 +0100 Subject: Improve authentication --- client/components/settings/settingBody.jade | 19 +++++++++++++++ client/components/settings/settingBody.js | 37 ++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 153649fc..220dbb50 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -141,6 +141,16 @@ template(name='layoutSettings') span {{_ 'yes'}} input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}") span {{_ 'no'}} + li.layout-form + .title {{_ 'display-authentication-method'}} + .form-group.flex + input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}") + span {{_ 'yes'}} + input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}") + span {{_ 'no'}} + li.layout-form + .title {{_ 'default-authentication-method'}} + +selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod) li.layout-form .title {{_ 'custom-product-name'}} .form-group @@ -153,3 +163,12 @@ template(name='layoutSettings') textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd li button.js-save-layout.primary {{_ 'save'}} + + +template(name='selectAuthenticationMethod') + select#defaultAuthenticationMethod + each authentications + if isSelected value + option(value="{{value}}" selected) {{_ value}} + else + option(value="{{value}}") {{_ value}} \ No newline at end of file diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 4f07c84c..1d05a8c7 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -62,6 +62,9 @@ BlazeComponent.extendComponent({ toggleHideLogo() { $('#hide-logo').toggleClass('is-checked'); }, + toggleDisplayAuthenticationMethod() { + $('#display-authentication-method').toggleClass('is-checked'); + }, switchMenu(event) { const target = $(event.target); if (!target.hasClass('active')) { @@ -140,17 +143,20 @@ BlazeComponent.extendComponent({ const productName = $('#product-name').val().trim(); const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true'); + const displayAuthenticationMethod = ($('input[name=displayAuthenticationMethod]:checked').val() === 'true'); + const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val(); const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim(); const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim(); try { - Settings.update(Settings.findOne()._id, { $set: { productName, hideLogo: hideLogoChange, customHTMLafterBodyStart, customHTMLbeforeBodyEnd, + displayAuthenticationMethod, + defaultAuthenticationMethod }, }); } catch (e) { @@ -190,6 +196,7 @@ BlazeComponent.extendComponent({ 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, 'click a.js-toggle-hide-logo': this.toggleHideLogo, 'click button.js-save-layout': this.saveLayout, + 'click a.js-toggle-display-authentication-method': this.toggleDisplayAuthenticationMethod }]; }, }).register('setting'); @@ -262,3 +269,31 @@ BlazeComponent.extendComponent({ }]; }, }).register('announcementSettings'); + + +Template.selectAuthenticationMethod.onCreated(function() { + this.authenticationMethods = new ReactiveVar([]); + + Meteor.call('getAuthenticationsEnabled', (_, result) => { + if (result) { + // TODO : add a management of different languages + // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) + this.authenticationMethods.set([ + {value: 'password'}, + // Gets only the authentication methods availables + ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), + ]); + } + }); +}); + +Template.selectAuthenticationMethod.helpers({ + authentications() { + return Template.instance().authenticationMethods.get(); + }, + isSelected(match) { + console.log('this : ', this); + console.log('instance : ', Template.instance()); + return Template.instance().data.authenticationMethod === match; + } +}); \ No newline at end of file -- cgit v1.2.3-1-g7c22 From de9965213ae32f4c314dd1a791891e01d12da1dd Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 1 Feb 2019 21:26:04 +0200 Subject: - Fix lint errors. Thanks to xet7 ! --- client/components/settings/settingBody.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 1d05a8c7..2f58d551 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -156,7 +156,7 @@ BlazeComponent.extendComponent({ customHTMLafterBodyStart, customHTMLbeforeBodyEnd, displayAuthenticationMethod, - defaultAuthenticationMethod + defaultAuthenticationMethod, }, }); } catch (e) { @@ -171,17 +171,14 @@ BlazeComponent.extendComponent({ sendSMTPTestEmail() { Meteor.call('sendSMTPTestEmail', (err, ret) => { - if (!err && ret) { /* eslint-disable no-console */ + if (!err && ret) { const message = `${TAPi18n.__(ret.message)}: ${ret.email}`; - console.log(message); alert(message); } else { const reason = err.reason || ''; const message = `${TAPi18n.__(err.error)}\n${reason}`; - console.log(message, err); alert(message); } - /* eslint-enable no-console */ }); }, @@ -196,7 +193,7 @@ BlazeComponent.extendComponent({ 'click button.js-send-smtp-test-email': this.sendSMTPTestEmail, 'click a.js-toggle-hide-logo': this.toggleHideLogo, 'click button.js-save-layout': this.saveLayout, - 'click a.js-toggle-display-authentication-method': this.toggleDisplayAuthenticationMethod + 'click a.js-toggle-display-authentication-method': this.toggleDisplayAuthenticationMethod, }]; }, }).register('setting'); @@ -292,8 +289,6 @@ Template.selectAuthenticationMethod.helpers({ return Template.instance().authenticationMethods.get(); }, isSelected(match) { - console.log('this : ', this); - console.log('instance : ', Template.instance()); return Template.instance().data.authenticationMethod === match; - } -}); \ No newline at end of file + }, +}); -- cgit v1.2.3-1-g7c22 From 4ce766853c83396c5ae0a8a0c11828fedc27688c Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 15 Feb 2019 17:06:05 +0100 Subject: Fix authentication dropdown --- client/components/settings/connectionMethod.jade | 7 +++++-- client/components/settings/connectionMethod.js | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade index ac4c8c64..d191929f 100644 --- a/client/components/settings/connectionMethod.jade +++ b/client/components/settings/connectionMethod.jade @@ -2,5 +2,8 @@ template(name='connectionMethod') div.at-form-authentication label {{_ 'authentication-method'}} select.select-authentication - each authentications - option(value="{{value}}") {{_ value}} + each authentications + if isSelected value + option(value="{{value}}" selected) {{_ value}} + else + option(value="{{value}}") {{_ value}} \ No newline at end of file diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js index 9fe8f382..db9da25f 100644 --- a/client/components/settings/connectionMethod.js +++ b/client/components/settings/connectionMethod.js @@ -31,4 +31,7 @@ Template.connectionMethod.helpers({ authentications() { return Template.instance().authenticationMethods.get(); }, + isSelected(match) { + return Template.instance().data.authenticationMethod === match; + }, }); -- cgit v1.2.3-1-g7c22 From 34d8235551cdef37f42d378c348031fc6848797c Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Wed, 27 Feb 2019 16:14:14 +0200 Subject: Add the following new Sandstorm features and fixes: - All Boards page [so it's possible to go back from subtask board](https://github.com/wekan/wekan/issues/2082) - Board favorites - New Sandstorm board first user is Admin and [has IFTTT Rules](https://github.com/wekan/wekan/issues/2125) and Standalone Wekan Admin Panel. Probably some Admin Panel features do not work yet. Please keep backup of your grains before testig Admin Panel. - Linked Cards and Linked Boards. - Some not needed options like Logout etc have been hidden from top bar right menu. - [Import board now works. "Board not found" is not problem anymore](https://github.com/wekan/wekan/issues/1430), because you can go to All Boards page to change to imported board. and removes the following features: - Remove Welcome Board from Standalone Wekan, [to fix Welcome board not translated](https://github.com/wekan/wekan/issues/1601). Sandstorm Wekan does not have Welcome Board. Thanks to xet7 ! Closes #2125, closes #2082, closes #1430, closes #1601, related #2205, related #2070, related #1695, related #1192. --- client/components/settings/settingHeader.jade | 31 +++++++++++++-------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingHeader.jade b/client/components/settings/settingHeader.jade index c2d4db3a..221c1b79 100644 --- a/client/components/settings/settingHeader.jade +++ b/client/components/settings/settingHeader.jade @@ -4,22 +4,21 @@ template(name="settingHeaderBar") .setting-header-btns.left unless isMiniScreen - unless isSandstorm - if currentUser - a.setting-header-btn.settings(href="{{pathFor 'setting'}}") - i.fa(class="fa-cog") - span {{_ 'settings'}} + if currentUser + a.setting-header-btn.settings(href="{{pathFor 'setting'}}") + i.fa(class="fa-cog") + span {{_ 'settings'}} - a.setting-header-btn.people(href="{{pathFor 'people'}}") - i.fa(class="fa-users") - span {{_ 'people'}} + a.setting-header-btn.people(href="{{pathFor 'people'}}") + i.fa(class="fa-users") + span {{_ 'people'}} - a.setting-header-btn.informations(href="{{pathFor 'information'}}") - i.fa(class="fa-info-circle") - span {{_ 'info'}} + a.setting-header-btn.informations(href="{{pathFor 'information'}}") + i.fa(class="fa-info-circle") + span {{_ 'info'}} - else - a.setting-header-btn.js-log-in( - title="{{_ 'log-in'}}") - i.fa.fa-sign-in - span {{_ 'log-in'}} + else + a.setting-header-btn.js-log-in( + title="{{_ 'log-in'}}") + i.fa.fa-sign-in + span {{_ 'log-in'}} -- cgit v1.2.3-1-g7c22 From 40a3267615d34b011acbf19d6706a85d98e2e8fb Mon Sep 17 00:00:00 2001 From: Ole Langbehn Date: Sat, 16 Mar 2019 14:25:04 +0100 Subject: make emails for invitations all lowercase for compatibility with AccountsTemplates Email addresses for invitations are stored case sensitive in mongo, together with the invitation codes. When someone tries to sign up due to an invitation, in the sign up form, due to AccountsTemplates defaults, the email address is lowercased on blur of the textbox. When they then try to sign in, they get an error about the invitation code not existing. This makes it impossible to successfully invite people using non-lowercased email addresses. This patch lowercases the emails on the client side when inviting them. Other possibilities would be to lowercase them on the server side before storing them to mongodb, making a case insensitive search on mongodb, or making the email input field in the sign up form not lowercase the email string. This patch was chosen in favor of the other possibilities because of its simplicity. --- client/components/settings/settingBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 2f58d551..8279a092 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -90,7 +90,7 @@ BlazeComponent.extendComponent({ }, inviteThroughEmail() { - const emails = $('#email-to-invite').val().trim().split('\n').join(',').split(','); + const emails = $('#email-to-invite').val().toLowerCase().trim().split('\n').join(',').split(','); const boardsToInvite = []; $('.js-toggle-board-choose .materialCheckBox.is-checked').each(function () { boardsToInvite.push($(this).data('id')); -- cgit v1.2.3-1-g7c22 From 2969161afbe60a1aa2e7da6cedc3ab48941faf3e Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 21 Mar 2019 20:27:21 +0200 Subject: - More whitelabeling. Thanks to xet7 ! --- client/components/settings/settingBody.jade | 6 +++--- client/components/settings/settingBody.styl | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 220dbb50..89911e09 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -134,7 +134,7 @@ template(name='announcementSettings') template(name='layoutSettings') ul#layout-setting.setting-detail - li.layout-form + //li.layout-form .title {{_ 'hide-logo'}} .form-group.flex input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}") @@ -154,7 +154,7 @@ template(name='layoutSettings') li.layout-form .title {{_ 'custom-product-name'}} .form-group - input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}") + input.form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}") li.layout-form .title {{_ 'add-custom-html-after-body-start'}} textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart @@ -171,4 +171,4 @@ template(name='selectAuthenticationMethod') if isSelected value option(value="{{value}}" selected) {{_ value}} else - option(value="{{value}}") {{_ value}} \ No newline at end of file + option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/settingBody.styl b/client/components/settings/settingBody.styl index 7f8bd4c0..dbf91a6c 100644 --- a/client/components/settings/settingBody.styl +++ b/client/components/settings/settingBody.styl @@ -52,6 +52,10 @@ .main-body padding: 0.1em 1em + -webkit-user-select: auto // Safari 3.1+ + -moz-user-select: auto // Firefox 2+ + -ms-user-select: auto // IE 10+ + user-select: auto // Standard syntax ul li -- cgit v1.2.3-1-g7c22 From 308417852c218501af60aeae3f947707cc7c64cc Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 14:57:52 +0200 Subject: Search user in admin panel --- client/components/settings/peopleBody.jade | 6 ++++-- client/components/settings/peopleBody.js | 23 ++++++++++++++++++++++- client/components/settings/peopleBody.styl | 17 +++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 4d06637e..e459da6e 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -3,8 +3,10 @@ template(name="people") unless currentUser.isAdmin | {{_ 'error-notAuthorized'}} else - .content-title + .content-title.ext-box span {{_ 'people'}} + input#searchInput(placeholder="{{_ 'search'}}") + button#searchButton {{_ 'enter'}} .content-body .side-menu ul @@ -103,4 +105,4 @@ template(name="editUserPopup") | {{_ 'password'}} input.js-profile-password(type="password") - input.primary.wide(type="submit" value="{{_ 'save'}}") \ No newline at end of file + input.primary.wide(type="submit" value="{{_ 'save'}}") diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index a4d70974..245c8884 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -8,6 +8,7 @@ BlazeComponent.extendComponent({ this.error = new ReactiveVar(''); this.loading = new ReactiveVar(false); this.people = new ReactiveVar(true); + this.findUsersOptions = new ReactiveVar({}); this.page = new ReactiveVar(1); this.loadNextPageLocked = false; @@ -26,6 +27,25 @@ BlazeComponent.extendComponent({ }); }); }, + events() { + return [{ + 'click #searchButton'(event) { + const value = $('#searchInput').first().val(); + if (value === '') { + this.findUsersOptions.set({}); + } else { + const regex = new RegExp(value, 'i'); + this.findUsersOptions.set({ + $or: [ + { username: regex }, + { 'profile.fullname': regex }, + { 'emails.address': regex }, + ] + }); + } + } + }]; + }, loadNextPage() { if (this.loadNextPageLocked === false) { this.page.set(this.page.get() + 1); @@ -49,7 +69,8 @@ BlazeComponent.extendComponent({ this.loading.set(w); }, peopleList() { - return Users.find({}, { + // get users in front to cache them + return Users.find(this.findUsersOptions.get(), { fields: {_id: true}, }); }, diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl index 84db44a7..fb9d5c6b 100644 --- a/client/components/settings/peopleBody.styl +++ b/client/components/settings/peopleBody.styl @@ -13,3 +13,20 @@ table tr:nth-child(even) background-color: #dddddd; + +.ext-box + display: flex; + flex-direction: row; + height: 34px; + + span + vertical-align: center; + line-height: 34px; + margin-right: 10px; + + input, button + margin: 0 10px 0 0; + padding: 0; + + button + min-width: 60px; -- cgit v1.2.3-1-g7c22 From 070feb4b664cf84613fed378d568a9449c3780e6 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 16:17:17 +0200 Subject: Number of users --- client/components/settings/peopleBody.jade | 9 ++++--- client/components/settings/peopleBody.js | 42 ++++++++++++++++++++---------- client/components/settings/peopleBody.styl | 4 +++ 3 files changed, 38 insertions(+), 17 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index e459da6e..30b7a807 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -4,9 +4,12 @@ template(name="people") | {{_ 'error-notAuthorized'}} else .content-title.ext-box - span {{_ 'people'}} - input#searchInput(placeholder="{{_ 'search'}}") - button#searchButton {{_ 'enter'}} + .ext-box-left + span {{_ 'people'}} + input#searchInput(placeholder="{{_ 'search'}}") + button#searchButton {{_ 'enter'}} + .ext-box-right + span {{_ 'people-number'}} #{peopleNumber} .content-body .side-menu ul diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index 245c8884..db7be138 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -9,6 +9,7 @@ BlazeComponent.extendComponent({ this.loading = new ReactiveVar(false); this.people = new ReactiveVar(true); this.findUsersOptions = new ReactiveVar({}); + this.number = new ReactiveVar(0); this.page = new ReactiveVar(1); this.loadNextPageLocked = false; @@ -30,22 +31,30 @@ BlazeComponent.extendComponent({ events() { return [{ 'click #searchButton'(event) { - const value = $('#searchInput').first().val(); - if (value === '') { - this.findUsersOptions.set({}); - } else { - const regex = new RegExp(value, 'i'); - this.findUsersOptions.set({ - $or: [ - { username: regex }, - { 'profile.fullname': regex }, - { 'emails.address': regex }, - ] - }); + this.filterPeople(event); + }, + 'keydown #searchInput'(event) { + if (event.keyCode === 13 && !event.shiftKey) { + this.filterPeople(event); } } }]; }, + filterPeople(event) { + const value = $('#searchInput').first().val(); + if (value === '') { + this.findUsersOptions.set({}); + } else { + const regex = new RegExp(value, 'i'); + this.findUsersOptions.set({ + $or: [ + { username: regex }, + { 'profile.fullname': regex }, + { 'emails.address': regex }, + ] + }); + } + }, loadNextPage() { if (this.loadNextPageLocked === false) { this.page.set(this.page.get() + 1); @@ -69,11 +78,16 @@ BlazeComponent.extendComponent({ this.loading.set(w); }, peopleList() { - // get users in front to cache them - return Users.find(this.findUsersOptions.get(), { + const users = Users.find(this.findUsersOptions.get(), { fields: {_id: true}, }); + this.number.set(users.count()); + return users; }, + peopleNumber() { + return this.number.get(); + } + }).register('people'); Template.peopleRow.helpers({ diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl index fb9d5c6b..b98c5340 100644 --- a/client/components/settings/peopleBody.styl +++ b/client/components/settings/peopleBody.styl @@ -19,6 +19,10 @@ table flex-direction: row; height: 34px; + .ext-box-left + display: flex; + width: 40% + span vertical-align: center; line-height: 34px; -- cgit v1.2.3-1-g7c22 From e63eee0c68d35a155da79f31ab18ddc5a76bde13 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 16:39:14 +0200 Subject: fix lints --- client/components/settings/peopleBody.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'client/components/settings') diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index db7be138..3ec96bb0 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -30,17 +30,17 @@ BlazeComponent.extendComponent({ }, events() { return [{ - 'click #searchButton'(event) { - this.filterPeople(event); + 'click #searchButton'() { + this.filterPeople(); }, 'keydown #searchInput'(event) { if (event.keyCode === 13 && !event.shiftKey) { - this.filterPeople(event); + this.filterPeople(); } - } + }, }]; }, - filterPeople(event) { + filterPeople() { const value = $('#searchInput').first().val(); if (value === '') { this.findUsersOptions.set({}); @@ -51,7 +51,7 @@ BlazeComponent.extendComponent({ { username: regex }, { 'profile.fullname': regex }, { 'emails.address': regex }, - ] + ], }); } }, @@ -86,8 +86,7 @@ BlazeComponent.extendComponent({ }, peopleNumber() { return this.number.get(); - } - + }, }).register('people'); Template.peopleRow.helpers({ -- cgit v1.2.3-1-g7c22 From 5993d6862bb5f25070fe5158a5f88cb04c178b67 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 20 Apr 2019 16:46:26 +0300 Subject: Change enter => search --- client/components/settings/peopleBody.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 30b7a807..4dca5cb1 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -7,7 +7,7 @@ template(name="people") .ext-box-left span {{_ 'people'}} input#searchInput(placeholder="{{_ 'search'}}") - button#searchButton {{_ 'enter'}} + button#searchButton {{_ 'search'}} .ext-box-right span {{_ 'people-number'}} #{peopleNumber} .content-body -- cgit v1.2.3-1-g7c22 From cdef8a33e4df1caf9c8796ded4d946a76acb28a0 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 26 Apr 2019 17:53:48 +0200 Subject: Delete user feature --- client/components/settings/peopleBody.jade | 5 ++++- client/components/settings/peopleBody.js | 9 +++++++++ client/components/settings/peopleBody.styl | 12 ++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'client/components/settings') diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 4dca5cb1..15deb005 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -107,5 +107,8 @@ template(name="editUserPopup") label | {{_ 'password'}} input.js-profile-password(type="password") + div.buttonsContainer + input.primary.wide(type="submit" value="{{_ 'save'}}") + div + input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}") - input.primary.wide(type="submit" value="{{_ 'save'}}") diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index 3ec96bb0..83cf14fa 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -98,6 +98,7 @@ Template.peopleRow.helpers({ Template.editUserPopup.onCreated(function() { this.authenticationMethods = new ReactiveVar([]); + this.errorMessage = new ReactiveVar(''); Meteor.call('getAuthenticationsEnabled', (_, result) => { if (result) { @@ -129,6 +130,9 @@ Template.editUserPopup.helpers({ const selected = Users.findOne(userId).authenticationMethod; return selected === 'ldap'; }, + errorMessage() { + return Template.instance().errorMessage.get(); + }, }); BlazeComponent.extendComponent({ @@ -220,4 +224,9 @@ Template.editUserPopup.events({ }); } else Popup.close(); }, + + 'click #deleteButton'() { + Users.remove(this.userId); + Popup.close(); + }, }); diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl index b98c5340..80387611 100644 --- a/client/components/settings/peopleBody.styl +++ b/client/components/settings/peopleBody.styl @@ -34,3 +34,15 @@ table button min-width: 60px; + +.content-wrapper + margin-top: 10px + +.buttonsContainer + display: flex + + input + margin: 0 + + div + margin: auto -- cgit v1.2.3-1-g7c22