Skip to content

Commit

Permalink
EPMRPP-96935 || Add SSO toggle to disable external user invites (#4109)
Browse files Browse the repository at this point in the history
* EPMRPP-96935 || Add SSO toggle to disable external user invites

* EPMRPP-96935 || Code review fixes - 2

* EPMRPP-96935 || Code review fixes - 3

* EPMRPP-96935 || Code review fixes - 4
  • Loading branch information
iso9000t authored Nov 26, 2024
1 parent 239ba94 commit d904d49
Show file tree
Hide file tree
Showing 12 changed files with 147 additions and 52 deletions.
8 changes: 7 additions & 1 deletion app/localization/translated/be.json
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@
"Common.add": "Дадаць",
"Common.analyzerDisabled": "Сэрвiс analyzer не запушчаны",
"Common.april": "Красавік",
"Common.assign": "Прызначыць",
"Common.august": "Жнівень",
"Common.back": "Назад",
"Common.cancel": "Адмяніць",
Expand Down Expand Up @@ -1070,7 +1071,9 @@
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Элементы",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Колькасць элементаў павінна быць памерам ад '1' да '600'",
"InviteUserModal.description": "Запрасіць карыстальніка на праект",
"InviteUserModal.descriptionAssign": "Прызначыць карыстальніка на праект",
"InviteUserModal.emailLabel": "Электронная пошта",
"InviteUserModal.headerAssignUserModal": "Прызначыць карыстальніка",
"InviteUserModal.headerInviteUserModal": "Запрасіць карыстальніка",
"InviteUserModal.inputPlaceholder": "Калі ласка, увядзіце лагін або адрас электроннай пошты",
"InviteUserModal.inviteExternalMember": "Запрашэнне ўдзельніка было паспяхова зарэгістравана. Якая пацвярджае інфармацыя будзе адпраўлена на прадстаўлены электронны адрас. Тэрмін дзеяння: 1 дзень.",
Expand Down Expand Up @@ -1373,6 +1376,7 @@
"MembersGrid.roleCol": "Праектная ролю",
"MembersPage.notFound": "Не знойдзена удзельнікаў па фільтру ''{filter}''",
"MembersPage.title": "Удзельнікі праекта",
"MembersPageToolbar.assignUser": "Прызначыць карыстальніка",
"MembersPageToolbar.inviteUser": "Запрасіць Карыстальніка",
"MembersPageToolbar.membersSearchHint": "Імя карыстальніка не павінна быць пустым",
"MembersPageToolbar.permissionMap": "Карта Правоў",
Expand Down Expand Up @@ -1840,9 +1844,11 @@
"SortingControl.sortByFailedItems": "Няўдалыя пункты",
"SortingControl.sortByPassingRate": "Прахадны бал",
"SortingControl.sortByTotal": "Агульная колькасць",
"SsoUsersForm.formHeader": "Instance Invitations",
"SsoUsersForm.errorNotification": "Не ўдалося абнавіць налады SSO",
"SsoUsersForm.formHeader": "Запрашэнне карыстальнікаў",
"SsoUsersForm.manualInvitesDescription": "Карыстальнікі могуць адпраўляць запрашэнні іншым карыстальнікам. Калі ўключана, новыя карыстальнікі могуць быць ствараны толькі праз SSO.",
"SsoUsersForm.ssoOnlyDescription": "Новыя карыстальнікі могуць быць створаны толькі праз SSO.",
"SsoUsersForm.successNotification": "Налады SSO паспяхова абноўлены",
"SsoUsersForm.switcherLabel": "Толькі SSO карыстальнікі",
"StackTrace.jumpTo": "Перайсці",
"StackTrace.linkText": "Адкрыць логі",
Expand Down
6 changes: 6 additions & 0 deletions app/localization/translated/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@
"Common.add": "Agregar",
"Common.analyzerDisabled": "El servicio del analizador no está disponible",
"Common.april": "Abril",
"Common.assign": "Assign",
"Common.august": "Agosto",
"Common.back": "Atrás",
"Common.cancel": "Cancelar",
Expand Down Expand Up @@ -1070,7 +1071,9 @@
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Elementos",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "El número de elementos debe estar entre '1' y '600'",
"InviteUserModal.description": "Invitar usuario al proyecto",
"InviteUserModal.descriptionAssign": "Assign user to the project",
"InviteUserModal.emailLabel": "Correo electrónico",
"InviteUserModal.headerAssignUserModal": "Assign user",
"InviteUserModal.headerInviteUserModal": "Invitar usuario",
"InviteUserModal.inputPlaceholder": "Ingrese nombre de usuario o correo electrónico",
"InviteUserModal.inviteExternalMember": "La invitación del miembro se ha registrado correctamente. La información de confirmación será enviada a la dirección de correo electrónico proporcionada. Validez: 1 día.",
Expand Down Expand Up @@ -1373,6 +1376,7 @@
"MembersGrid.roleCol": "Rol de proyecto",
"MembersPage.notFound": "No se encontraron miembros para ''{filter}''",
"MembersPage.title": "Miembros del proyecto",
"MembersPageToolbar.assignUser": "Assign User",
"MembersPageToolbar.inviteUser": "Invitar Usuario",
"MembersPageToolbar.membersSearchHint": "El nombre de usuario no debe estar vacío",
"MembersPageToolbar.permissionMap": "Mapa de permisos",
Expand Down Expand Up @@ -1840,9 +1844,11 @@
"SortingControl.sortByFailedItems": "Elementos fallidos",
"SortingControl.sortByPassingRate": "Porcentaje de aprobados",
"SortingControl.sortByTotal": "Cantidad total",
"SsoUsersForm.errorNotification": "Failed to update SSO settings",
"SsoUsersForm.formHeader": "Instance Invitations",
"SsoUsersForm.manualInvitesDescription": "Users can manually send invitations for other users. If enabled new users can be created via SSO only.",
"SsoUsersForm.ssoOnlyDescription": "New users can be created via SSO only.",
"SsoUsersForm.successNotification": "SSO settings have been updated successfully",
"SsoUsersForm.switcherLabel": "SSO users only",
"StackTrace.jumpTo": "Ir a",
"StackTrace.linkText": "Abrir registros",
Expand Down
8 changes: 7 additions & 1 deletion app/localization/translated/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@
"Common.add": "Добавить",
"Common.analyzerDisabled": "Сервис analyzer не запущен",
"Common.april": "Апрель",
"Common.assign": "Назначить",
"Common.august": "Август",
"Common.back": "Назад",
"Common.cancel": "Отменить",
Expand Down Expand Up @@ -1070,7 +1071,9 @@
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Элементы",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Количество элементов принимает значения от '1' до '600'",
"InviteUserModal.description": "Пригласить пользователя на проект",
"InviteUserModal.descriptionAssign": "Назначить пользователя на проект",
"InviteUserModal.emailLabel": "Электронная почта",
"InviteUserModal.headerAssignUserModal": "Назначить пользователя",
"InviteUserModal.headerInviteUserModal": "Пригласить пользователя",
"InviteUserModal.inputPlaceholder": "Введите логин или адрес электронной почты",
"InviteUserModal.inviteExternalMember": "Приглашение участника было успешно зарегистрировано. Подтверждающая информация будет отправлена на предоставленный электронный адрес. Срок действия: 1 день.",
Expand Down Expand Up @@ -1373,6 +1376,7 @@
"MembersGrid.roleCol": "Проектная роль",
"MembersPage.notFound": "No members found for ''{filter}''",
"MembersPage.title": "Участники проекта",
"MembersPageToolbar.assignUser": "Назначить пользователя",
"MembersPageToolbar.inviteUser": "Пригласить Пользователя",
"MembersPageToolbar.membersSearchHint": "Имя пользователя не должно быть пустым",
"MembersPageToolbar.permissionMap": "Карта Прав",
Expand Down Expand Up @@ -1840,9 +1844,11 @@
"SortingControl.sortByFailedItems": "Неудачные пункты",
"SortingControl.sortByPassingRate": "Проходной балл",
"SortingControl.sortByTotal": "Общее количество",
"SsoUsersForm.formHeader": "Instance Invitations",
"SsoUsersForm.errorNotification": "Не удалось обновить настройки SSO",
"SsoUsersForm.formHeader": "Приглашение пользователей",
"SsoUsersForm.manualInvitesDescription": "Пользователи могут вручную отправлять приглашения другим пользователям. Если включено, новых пользователей можно создавать только через SSO.",
"SsoUsersForm.ssoOnlyDescription": "Новых пользователей можно создавать только через SSO.",
"SsoUsersForm.successNotification": "Настройки SSO успешно обновлены",
"SsoUsersForm.switcherLabel": "Только SSO пользователи",
"StackTrace.jumpTo": "Перейти",
"StackTrace.linkText": "Открыть логи",
Expand Down
10 changes: 8 additions & 2 deletions app/localization/translated/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@
"Common.add": "Додати",
"Common.analyzerDisabled": "Сервіс analyzer не запущений",
"Common.april": "Квітень",
"Common.assign": "Призначити",
"Common.august": "Серпень",
"Common.back": "Тому",
"Common.cancel": "Скасувати",
Expand Down Expand Up @@ -1070,7 +1071,9 @@
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Елементи",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Кількість елементів приймає значення від '1' до '600'",
"InviteUserModal.description": "Запросити користувача на проект",
"InviteUserModal.descriptionAssign": "Долучити користувача до проєкту",
"InviteUserModal.emailLabel": "Адреса електронної пошти",
"InviteUserModal.headerAssignUserModal": "Призначити користувача",
"InviteUserModal.headerInviteUserModal": "Запросити користувача",
"InviteUserModal.inputPlaceholder": "Введіть логін або адресу електронної пошти",
"InviteUserModal.inviteExternalMember": "Запрошення учасника було успішно зареєстровано. Підтверджуюча інформація буде відправлена на наданий електронну адресу. Термін дії: 1 день.",
Expand Down Expand Up @@ -1373,6 +1376,7 @@
"MembersGrid.roleCol": "Проектна роль",
"MembersPage.notFound": "No members found for ''{filter}''",
"MembersPage.title": "Учасники проекту",
"MembersPageToolbar.assignUser": "Призначити користувача",
"MembersPageToolbar.inviteUser": "Запросити Користувача",
"MembersPageToolbar.membersSearchHint": "Ім’я користувача не повинно бути порожнім",
"MembersPageToolbar.permissionMap": "Карта Прав",
Expand Down Expand Up @@ -1840,10 +1844,12 @@
"SortingControl.sortByFailedItems": "Невдалі пункти",
"SortingControl.sortByPassingRate": "Прохідний бал",
"SortingControl.sortByTotal": "Загальна кількість",
"SsoUsersForm.formHeader": "Instance Invitations",
"SsoUsersForm.errorNotification": "Не вдалося оновити налаштування SSO",
"SsoUsersForm.formHeader": "Запрошення користувачів",
"SsoUsersForm.manualInvitesDescription": "Користувачі можуть самостійно надсилати запрошення іншим користувачам. Якщо ввімкнено, нові користувачі створюються виключно через SSO.",
"SsoUsersForm.ssoOnlyDescription": "Користувачі створюються виключно через SSO.",
"SsoUsersForm.switcherLabel": "SSO users only",
"SsoUsersForm.successNotification": "Налаштування SSO успішно оновлено",
"SsoUsersForm.switcherLabel": "Тільки SSO користувачі",
"StackTrace.jumpTo": "Перейти",
"StackTrace.linkText": "Логи Відкрити",
"StackTrace.loadLabel": "Завантажити",
Expand Down
6 changes: 6 additions & 0 deletions app/localization/translated/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@
"Common.add": "添加",
"Common.analyzerDisabled": "服务分析器未运行",
"Common.april": "四月",
"Common.assign": "Assign",
"Common.august": "八月",
"Common.back": "返回",
"Common.cancel": "取消",
Expand Down Expand Up @@ -1070,7 +1071,9 @@
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "测试项",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "测试项的数量应为1到600个",
"InviteUserModal.description": "为此项目邀请用户",
"InviteUserModal.descriptionAssign": "Assign user to the project",
"InviteUserModal.emailLabel": "邮箱",
"InviteUserModal.headerAssignUserModal": "Assign user",
"InviteUserModal.headerInviteUserModal": "邀请用户",
"InviteUserModal.inputPlaceholder": "请输入登录名或邮箱",
"InviteUserModal.inviteExternalMember": "会员邀请已登记。确认信息将通过提供的电子邮件发送。有效期:1天。",
Expand Down Expand Up @@ -1373,6 +1376,7 @@
"MembersGrid.roleCol": "项目角色",
"MembersPage.notFound": "未找到“{filter}”的成员",
"MembersPage.title": "项目成员",
"MembersPageToolbar.assignUser": "Assign User",
"MembersPageToolbar.inviteUser": "邀请用户",
"MembersPageToolbar.membersSearchHint": "成员名不能为空",
"MembersPageToolbar.permissionMap": "权限表",
Expand Down Expand Up @@ -1840,9 +1844,11 @@
"SortingControl.sortByFailedItems": "失败的测试项",
"SortingControl.sortByPassingRate": "通过率",
"SortingControl.sortByTotal": "全部",
"SsoUsersForm.errorNotification": "Failed to update SSO settings",
"SsoUsersForm.formHeader": "Instance Invitations",
"SsoUsersForm.manualInvitesDescription": "Users can manually send invitations for other users. If enabled new users can be created via SSO only.",
"SsoUsersForm.ssoOnlyDescription": "New users can be created via SSO only.",
"SsoUsersForm.successNotification": "SSO settings have been updated successfully",
"SsoUsersForm.switcherLabel": "SSO users only",
"StackTrace.jumpTo": "跳转至",
"StackTrace.linkText": "在日志视图中打开",
Expand Down
4 changes: 4 additions & 0 deletions app/src/common/constants/localization.js
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ export const COMMON_LOCALE_KEYS = defineMessages({
id: 'Common.value',
defaultMessage: 'Value',
},
ASSIGN: {
id: 'Common.assign',
defaultMessage: 'Assign',
},
});

export const months = [
Expand Down
1 change: 1 addition & 0 deletions app/src/common/urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -311,4 +311,5 @@ export const URLS = {
clusterByLaunchId: (activeProject, launchId, query) =>
`${urlBase}${activeProject}/launch/cluster/${launchId}${getQueryParams(query)}`,
onboarding: (page = 'GENERAL') => `${urlBase}onboarding?page=${page}`,
instanceSettings: () => `${urlBase}settings`,
};
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export const InputUserSearch = ({
error,
touched,
placeholder,
creatable,
}) => (
<AsyncAutocomplete
getURI={getURI(isAdmin, projectId)}
Expand All @@ -79,7 +80,7 @@ export const InputUserSearch = ({
renderOption={renderOption}
placeholder={placeholder}
isOptionUnique={isOptionUnique}
creatable
creatable={creatable}
showDynamicSearchPrompt
/>
);
Expand All @@ -92,7 +93,9 @@ InputUserSearch.propTypes = {
value: PropTypes.object,
error: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
touched: PropTypes.bool,
creatable: PropTypes.bool,
};

InputUserSearch.defaultProps = {
isAdmin: false,
projectId: '',
Expand All @@ -101,4 +104,5 @@ InputUserSearch.defaultProps = {
value: null,
error: false,
touched: false,
creatable: true,
};
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import InviteUserIcon from 'common/img/invite-inline.svg';
import AddUserIcon from 'common/img/add-user-inline.svg';
import { URLS } from 'common/urls';
import { showModalAction } from 'controllers/modal';
import { ssoUsersOnlySelector } from 'controllers/appInfo';
import {
showNotification,
showDefaultErrorNotification,
Expand Down Expand Up @@ -65,6 +66,7 @@ const messages = defineMessages({
@connect(
(state) => ({
filterEntities: collectFilterEntities(querySelector(state)),
ssoUsersOnly: ssoUsersOnlySelector(state),
}),
{
showModalAction,
Expand All @@ -86,10 +88,12 @@ export class ActionPanel extends Component {
trackEvent: PropTypes.func,
getTrackingData: PropTypes.func,
}).isRequired,
ssoUsersOnly: PropTypes.bool,
};

static defaultProps = {
filterEntities: {},
ssoUsersOnly: false,
};

onExportUsers = () => {
Expand Down Expand Up @@ -139,23 +143,28 @@ export class ActionPanel extends Component {
});
};

actionButtons = [
{
key: EXPORT,
icon: ExportIcon,
onClick: this.onExportUsers,
},
{
key: INVITE_USER,
icon: InviteUserIcon,
onClick: this.showInviteUserModal,
},
{
key: ADD_USER,
icon: AddUserIcon,
onClick: this.showAddUserModal,
},
];
get actionButtons() {
const { ssoUsersOnly } = this.props;
const allButtons = [
{
key: EXPORT,
icon: ExportIcon,
onClick: this.onExportUsers,
},
{
key: INVITE_USER,
icon: InviteUserIcon,
onClick: this.showInviteUserModal,
},
{
key: ADD_USER,
icon: AddUserIcon,
onClick: this.showAddUserModal,
},
];

return ssoUsersOnly ? [allButtons[0]] : allButtons;
}

renderHeaderButtons = () => {
const {
Expand Down
Loading

0 comments on commit d904d49

Please sign in to comment.