Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | 32x 23x 224x 173x 51x 51x 119x 51x 23x 235x 668x 23x 86x 94x 23x 91x 23x 11x 2x 2x 9x | import { uniqueId } from 'lodash'; import showGlobalToast from '~/vue_shared/plugins/global_toast'; import { __, s__ } from '~/locale'; import { generateBadges as CEGenerateBadges, roleDropdownItems as CERoleDropdownItems, isDirectMember, handleMemberRoleUpdate as CEHandleMemberRoleUpdate, } from '~/members/utils'; export { isGroup, isDirectMember, isCurrentUser, canRemove, canRemoveBlockedByLastOwner, canResend, canUpdate, } from '~/members/utils'; export const generateBadges = ({ member, isCurrentUser, canManageMembers }) => [ ...CEGenerateBadges({ member, isCurrentUser, canManageMembers }), { show: member.usingLicense, text: __('Is using seat'), variant: 'neutral', }, { show: member.groupSso, text: __('SAML'), variant: 'info', }, { show: member.groupManagedAccount, text: __('Managed Account'), variant: 'info', }, { show: member.canOverride, text: __('LDAP'), variant: 'info', }, { show: member.enterpriseUserOfThisGroup, text: __('Enterprise'), variant: 'info', }, ]; /** * Creates the dropdowns options for static and custom roles * * @param {object} member * @param {Map<string, number>} member.validRoles * @param {Array<{baseAccessLevel: number, name: string, memberRoleId: number}>} member.customRoles */ export const roleDropdownItems = ({ validRoles, customRoles }) => { if (!customRoles?.length) { return CERoleDropdownItems({ validRoles }); } const { flatten: staticRoleDropdownItems } = CERoleDropdownItems({ validRoles }); const customRoleDropdownItems = customRoles.map( ({ baseAccessLevel, name, memberRoleId, description }) => ({ accessLevel: baseAccessLevel, memberRoleId, text: name, value: uniqueId('role-custom-'), description, }), ); return { flatten: [...staticRoleDropdownItems, ...customRoleDropdownItems], formatted: [ { text: s__('MemberRole|Standard roles'), options: staticRoleDropdownItems, }, { text: s__('MemberRole|Custom roles'), options: customRoleDropdownItems, }, ], }; }; /** * Finds and returns unique value * * @param {Array<{accessLevel: number, memberRoleId: null|number, text: string, value: string}>} flattenDropdownItems * @param {object} member * @param {{integerValue: number, memberRoleId: undefined|null|number}} member.accessLevel */ export const initialSelectedRole = (flattenDropdownItems, member) => { return flattenDropdownItems.find( ({ accessLevel, memberRoleId }) => accessLevel === member.accessLevel.integerValue && memberRoleId === (member.accessLevel.memberRoleId ?? null), )?.value; }; export const canDisableTwoFactor = (member) => { return Boolean(member.canDisableTwoFactor); }; export const canOverride = (member) => member.canOverride && isDirectMember(member); export const canUnban = (member) => { return Boolean(member.banned) && member.canUnban; }; /** * Handles role change response, whether it was immediate or enqueued * * @param {object} update * @param {string} update.currentRole * @param {string} update.requestedRole * @param {object} update.response server response * @returns {string} actual new member role */ export const handleMemberRoleUpdate = ({ currentRole, requestedRole, response }) => { // key and enum are defined in ee/app/controllers/concerns/ee/membership_actions.rb if (response?.data?.enqueued) { showGlobalToast(s__('Members|Role change request was sent to the administrator.')); return currentRole; } return CEHandleMemberRoleUpdate({ currentRole, requestedRole, response }); }; |