Move EE differences for `app/assets/javascripts/members.js`
The file app/assets/javascripts/members.js
has differences between CE and EE.
Diferences
diff --git a/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/app/assets/javascripts/members.js b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/app/assets/javascripts/members.js
index bd263c75a3d..59af9b7873f 100644
--- a/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/app/assets/javascripts/members.js
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/app/assets/javascripts/members.js
@@ -1,4 +1,7 @@
import $ from 'jquery';
+import Flash from './flash';
+import { __ } from './locale';
+import axios from './lib/utils/axios_utils';
export default class Members {
constructor() {
@@ -7,6 +10,15 @@ export default class Members {
}
addListeners() {
+ $('.js-ldap-permissions')
+ .off('click')
+ .on('click', this.showLDAPPermissionsWarning.bind(this));
+ $('.js-ldap-override')
+ .off('click')
+ .on('click', this.toggleMemberAccessToggle.bind(this));
+ $('.project_member, .group_member')
+ .off('ajax:success')
+ .on('ajax:success', this.removeRow);
$('.js-member-update-control')
.off('change')
.on('change', this.formSubmit.bind(this));
@@ -23,6 +35,10 @@ export default class Members {
$btn.glDropdown({
selectable: true,
isSelectable(selected, $el) {
+ if ($el.data('revert')) {
+ return false;
+ }
+
return !$el.hasClass('is-active');
},
fieldName: $btn.data('fieldName'),
@@ -30,10 +46,28 @@ export default class Members {
return $el.data('id');
},
toggleLabel(selected, $el) {
+ if ($el.data('revert')) {
+ return $btn.text();
+ }
+
return $el.text();
},
clicked: options => {
- this.formSubmit(null, options.$el);
+ const $link = options.$el;
+
+ if (!$link.data('revert')) {
+ this.formSubmit(null, $link);
+ } else {
+ const { $memberListItem, $toggle, $dateInput } = this.getMemberListItems($link);
+
+ $toggle.disable();
+ $dateInput.disable();
+
+ this.overrideLdap($memberListItem, $link.data('endpoint'), false).catch(() => {
+ $toggle.enable();
+ $dateInput.enable();
+ });
+ }
},
});
});
@@ -55,6 +89,15 @@ export default class Members {
$toggle.enable();
$dateInput.enable();
}
+
+ showLDAPPermissionsWarning(e) {
+ const $btn = $(e.currentTarget);
+ const { $memberListItem } = this.getMemberListItems($btn);
+ const $ldapPermissionsElement = $memberListItem.next();
+
+ $ldapPermissionsElement.toggle();
+ }
+
// eslint-disable-next-line class-methods-use-this
getMemberListItems($el) {
const $memberListItem = $el.is('.member') ? $el : $(`#${$el.data('elId')}`);
@@ -65,4 +108,44 @@ export default class Members {
$dateInput: $memberListItem.find('.js-access-expiration-date'),
};
}
+
+ toggleMemberAccessToggle(e) {
+ const $btn = $(e.currentTarget);
+ const { $memberListItem, $toggle, $dateInput } = this.getMemberListItems($btn);
+
+ $btn.disable();
+ this.overrideLdap($memberListItem, $btn.data('endpoint'), true)
+ .then(() => {
+ this.showLDAPPermissionsWarning(e);
+
+ $toggle.enable();
+ $dateInput.enable();
+ })
+ .catch(xhr => {
+ $btn.enable();
+
+ if (xhr.status === 403) {
+ Flash(
+ __(
+ 'You do not have the correct permissions to override the settings from the LDAP group sync.',
+ ),
+ );
+ } else {
+ Flash(__('An error occurred while saving LDAP override status. Please try again.'));
+ }
+ });
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ overrideLdap($memberListitem, endpoint, override) {
+ return axios
+ .patch(endpoint, {
+ group_member: {
+ override,
+ },
+ })
+ .then(() => {
+ $memberListitem.toggleClass('is-overriden', override);
+ });
+ }
}
What needs to be done
- import statements can be safely moved to the CE version
- Safeguard all differences with
ifEE