From 373d76fa46e787d72c78f903ef320fa3ba9745d7 Mon Sep 17 00:00:00 2001
From: Vadim73i <55870906+Vadim73i@users.noreply.github.com>
Date: Tue, 26 Mar 2024 17:49:57 +0300
Subject: [PATCH 01/14] EPMRPP-89704 || Disable ability to change password for
default user on demo instance (#3777)
---
app/localization/translated/be.json | 9 +++-----
app/localization/translated/ru.json | 9 +++-----
app/localization/translated/uk.json | 9 +++-----
app/localization/translated/zh.json | 11 ++++------
app/src/common/constants/accountRoles.js | 1 +
.../personalInfoBlock/personalInfoBlock.jsx | 22 +++++++++++++++++--
6 files changed, 34 insertions(+), 27 deletions(-)
diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json
index 6513ef9148..208f7c51cb 100644
--- a/app/localization/translated/be.json
+++ b/app/localization/translated/be.json
@@ -84,8 +84,8 @@
"AddFilter.placeholderFilterName": "Увядзіце назву фільтра",
"AddIntegrationModal.createGlobalTitle": "Стварыць глабальную інтэграцыю",
"AddIntegrationModal.createProjectTitle": "Стварыць праектную інтэграцыю",
- "AddIntegrationModal.editProjectIntegrationTitle": "Рэдагаваць інтэграцыю праекта",
"AddIntegrationModal.editGlobalIntegrationTitle": "Рэдагаваць глабальную інтэграцыю",
+ "AddIntegrationModal.editProjectIntegrationTitle": "Рэдагаваць інтэграцыю праекта",
"AddNewCaseButton.addNewRuleButton": "Дадаць новае правіла",
"AddUserForm.addUserTitle": "Дадаць карыстальніка",
"AddUserForm.generatePassword": "Згенераваць пароль",
@@ -262,8 +262,6 @@
"Charts.testCasesCaption": "Тэставыя выпадкі",
"Charts.total": "Усяго {type}",
"ClusterItemsGridRow.loadLabel": "Загрузіць яшчэ",
- "ColorPicker.pickSwatch": "Выберыце ўзор",
- "ColorPicker.selectColor": "Выберыце свой колер",
"CommandItem.commandTitle": "Каманда",
"CommandItem.parametersTitle": "Параметры",
"CommandItem.responseTitle": "Адказ",
@@ -725,6 +723,7 @@
"EventsGrid.userSearchPlaceholder": "Калі ласка, увядзіце імя карыстальніка",
"ExpandToggler.hideCriteria": "Схаваць Крытэрыі",
"ExpandToggler.showCriteria": "Паказаць Крытэрыі",
+ "ExtensionError.message": "У плагіне адбыўся збой.
Дачакайцеся ўзнаўлення злучэння
або звярніцеся за дапамогай да адміністратара.",
"ExternalSystems.createIntegration": "сканфігураваў",
"ExternalSystems.deleteIntegration": "выдаліў",
"ExternalSystems.emailDefaultName": "Email Server",
@@ -736,7 +735,6 @@
"ExternalUserInvitationModal.email": "Запрашэнне было адпраўлена на",
"ExternalUserInvitationModal.header": "Запрасіць карыстальніка",
"ExternalUserInvitationModal.link": "Спасылка на запрашэнне",
- "ExtensionError.message": "У плагіне адбыўся збой.
Дачакайцеся ўзнаўлення злучэння
або звярніцеся за дапамогай да адміністратара.",
"FailedCasesTrendChart.failedCases": "няўдалыя сцэнарыі",
"FailedCasesTrendControls.ItemsFieldLabel": "Элементы",
"FailedCasesTrendControls.ItemsValidationError": "Колькасць элементаў павінна быць памерам ад '1' да '600'",
@@ -1029,7 +1027,6 @@
"IntegrationsList.bts": "Сістэма адсочвання памылак",
"IntegrationsList.notification": "Апавяшчэнні",
"IntegrationsList.other": "Іншыя",
- "IntegrationsTab.integrationsBreadcrumbTitle": "Інтэграцыі",
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Элементы",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Колькасць элементаў павінна быць памерам ад '1' да '600'",
"InviteUserModal.description": "Запрасіць карыстальніка на праект",
@@ -1543,6 +1540,7 @@
"PersonalInfo.memberAdmin": "Адміністратар",
"PersonalInfo.memberYou": "Вы",
"PersonalInfoBlock.changePassword": "Змяніць Пароль",
+ "PersonalInfoBlock.disabledChangePassword": "Забараняецца мяняць пароль для карыстальніка па змаўчанні ў дэма-версіі",
"PersonalInfoBlock.errorChangePassword": "Памылка! Не ўдаецца змяніць пароль",
"PersonalInfoBlock.forceUpdate": "Абнавіць Прымусова",
"PersonalInfoBlock.inProgress": "У працэсе",
@@ -1639,7 +1637,6 @@
"ProjectActivityControls.UsersPlaceholder": "Увядзiце iмя карыстальніка",
"ProjectDetailsPageEvents.headerButton": "Маніторынг праекта",
"ProjectDetailsPageMembers.headerButton": "Удзельнікі праекта",
- "ProjectDetailsPageSettings.headerButton": "Налады праекта",
"ProjectPanel.assign": "Прызначыць",
"ProjectPanel.delete": "Выдаліць",
"ProjectPanel.internal": "Унутраны",
diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json
index 007acdfff6..d97a6083f2 100644
--- a/app/localization/translated/ru.json
+++ b/app/localization/translated/ru.json
@@ -84,8 +84,8 @@
"AddFilter.placeholderFilterName": "Ввести имя фильтра",
"AddIntegrationModal.createGlobalTitle": "Создать глобальную интеграцию",
"AddIntegrationModal.createProjectTitle": "Создать проектную интеграцию",
- "AddIntegrationModal.editProjectIntegrationTitle": "Редактировать интеграцию проекта",
"AddIntegrationModal.editGlobalIntegrationTitle": "Редактировать глобальную интеграцию",
+ "AddIntegrationModal.editProjectIntegrationTitle": "Редактировать интеграцию проекта",
"AddNewCaseButton.addNewRuleButton": "Добавить новое правило",
"AddUserForm.addUserTitle": "Добавить пользователя",
"AddUserForm.generatePassword": "Сгенерировать пароль",
@@ -262,8 +262,6 @@
"Charts.testCasesCaption": "Тествовые случаи",
"Charts.total": "Всего {type}",
"ClusterItemsGridRow.loadLabel": "Загрузить еще",
- "ColorPicker.pickSwatch": "Выберите образец",
- "ColorPicker.selectColor": "Выберите свой цвет",
"CommandItem.commandTitle": "Команда",
"CommandItem.parametersTitle": "Параметры",
"CommandItem.responseTitle": "Ответ",
@@ -725,6 +723,7 @@
"EventsGrid.userSearchPlaceholder": "Введите имя пользователя",
"ExpandToggler.hideCriteria": "Спрятать Критерии",
"ExpandToggler.showCriteria": "Показать Критерии",
+ "ExtensionError.message": "В плагине произошел сбой.
Дождитесь восстановления соединения
или обратитесь за помощью к администратору.",
"ExternalSystems.createIntegration": "сконфигурировал",
"ExternalSystems.deleteIntegration": "удалил",
"ExternalSystems.emailDefaultName": "Email Server",
@@ -736,7 +735,6 @@
"ExternalUserInvitationModal.email": "Приглашение было отправлено на",
"ExternalUserInvitationModal.header": "Пригласить пользователя",
"ExternalUserInvitationModal.link": "Ссылка на приглашение",
- "ExtensionError.message": "В плагине произошел сбой.
Дождитесь восстановления соединения
или обратитесь за помощью к администратору.",
"FailedCasesTrendChart.failedCases": "неудавшиеся сценарии",
"FailedCasesTrendControls.ItemsFieldLabel": "Элементы",
"FailedCasesTrendControls.ItemsValidationError": "Количество элементов принимает значения от '1' до '600'",
@@ -1029,7 +1027,6 @@
"IntegrationsList.bts": "Системы отслеживания ошибок",
"IntegrationsList.notification": "Уведомления",
"IntegrationsList.other": "Другие",
- "IntegrationsTab.integrationsBreadcrumbTitle": "Интеграции",
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Элементы",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Количество элементов принимает значения от '1' до '600'",
"InviteUserModal.description": "Пригласить пользователя на проект",
@@ -1543,6 +1540,7 @@
"PersonalInfo.memberAdmin": "Администратор",
"PersonalInfo.memberYou": "Вы",
"PersonalInfoBlock.changePassword": "Изменить Пароль",
+ "PersonalInfoBlock.disabledChangePassword": "Запрещено менять пароль пользователя по умолчанию на демо инстансе.",
"PersonalInfoBlock.errorChangePassword": "Ошибка! Не удается изменить пароль",
"PersonalInfoBlock.forceUpdate": "Обновить Принудительно",
"PersonalInfoBlock.inProgress": "В процессе",
@@ -1639,7 +1637,6 @@
"ProjectActivityControls.UsersPlaceholder": "Введите имя пользователя",
"ProjectDetailsPageEvents.headerButton": "Мониторинг проекта",
"ProjectDetailsPageMembers.headerButton": "Участники проекта",
- "ProjectDetailsPageSettings.headerButton": "Настройки проекта",
"ProjectPanel.assign": "Назначить",
"ProjectPanel.delete": "Удалить",
"ProjectPanel.internal": "Внутренний",
diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json
index 15fbed9912..bbd42cff51 100644
--- a/app/localization/translated/uk.json
+++ b/app/localization/translated/uk.json
@@ -84,8 +84,8 @@
"AddFilter.placeholderFilterName": "Ввести ім’я фільтру",
"AddIntegrationModal.createGlobalTitle": "Створити глобальну інтеграцію",
"AddIntegrationModal.createProjectTitle": "Створити проектну інтеграцію",
- "AddIntegrationModal.editProjectIntegrationTitle": "Редагувати інтеграцію проекту",
"AddIntegrationModal.editGlobalIntegrationTitle": "Редагувати глобальну інтеграцію",
+ "AddIntegrationModal.editProjectIntegrationTitle": "Редагувати інтеграцію проекту",
"AddNewCaseButton.addNewRuleButton": "Додати нове правило",
"AddUserForm.addUserTitle": "Додати користувача",
"AddUserForm.generatePassword": "Згенерувати пароль",
@@ -262,8 +262,6 @@
"Charts.testCasesCaption": "Тествовые випадки",
"Charts.total": "Всього {type}",
"ClusterItemsGridRow.loadLabel": "Завантажити",
- "ColorPicker.pickSwatch": "Виберіть зразок",
- "ColorPicker.selectColor": "Виберіть свій колір",
"CommandItem.commandTitle": "Команда",
"CommandItem.parametersTitle": "Параметри",
"CommandItem.responseTitle": "Відповідь",
@@ -725,6 +723,7 @@
"EventsGrid.userSearchPlaceholder": "Введіть ім’я користувача",
"ExpandToggler.hideCriteria": "Сховати Критерії",
"ExpandToggler.showCriteria": "Показати Критерії",
+ "ExtensionError.message": "У плагіні стався збій.
Дочекайте відновлення з'єднання
або зверніться за допомогою до адміністратора.",
"ExternalSystems.createIntegration": "сконфигурировал",
"ExternalSystems.deleteIntegration": "видалив",
"ExternalSystems.emailDefaultName": "Email Server",
@@ -736,7 +735,6 @@
"ExternalUserInvitationModal.email": "Запрошення було надіслано на",
"ExternalUserInvitationModal.header": "Запросити користувача",
"ExternalUserInvitationModal.link": "Посилання на запрошення",
- "ExtensionError.message": "У плагіні стався збій.
Дочекайте відновлення з'єднання
або зверніться за допомогою до адміністратора.",
"FailedCasesTrendChart.failedCases": "сценарії невдалі",
"FailedCasesTrendControls.ItemsFieldLabel": "Елементи",
"FailedCasesTrendControls.ItemsValidationError": "Кількість елементів приймає значення від '1' до '600'",
@@ -1029,7 +1027,6 @@
"IntegrationsList.bts": "Системи відстеження помилок",
"IntegrationsList.notification": "Повідомлення",
"IntegrationsList.other": "Інші",
- "IntegrationsTab.integrationsBreadcrumbTitle": "Інтеграції",
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "Елементи",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "Кількість елементів приймає значення від '1' до '600'",
"InviteUserModal.description": "Запросити користувача на проект",
@@ -1543,6 +1540,7 @@
"PersonalInfo.memberAdmin": "Адміністратор",
"PersonalInfo.memberYou": "Ви",
"PersonalInfoBlock.changePassword": "Змінити Пароль",
+ "PersonalInfoBlock.disabledChangePassword": "Заборонено змінювати пароль користувача за замовчуванням на демонстраційному екземплярі",
"PersonalInfoBlock.errorChangePassword": "Помилка! Не вдається змінити пароль",
"PersonalInfoBlock.forceUpdate": "Оновити Примусово",
"PersonalInfoBlock.inProgress": "У процесі",
@@ -1639,7 +1637,6 @@
"ProjectActivityControls.UsersPlaceholder": "Введіть ім’я користувача",
"ProjectDetailsPageEvents.headerButton": "Моніторинг проекту",
"ProjectDetailsPageMembers.headerButton": "Учасники проекту",
- "ProjectDetailsPageSettings.headerButton": "Налаштування проекту",
"ProjectPanel.assign": "Призначити",
"ProjectPanel.delete": "Видалити",
"ProjectPanel.internal": "Внутрішній",
diff --git a/app/localization/translated/zh.json b/app/localization/translated/zh.json
index aff968f108..585db8f8f4 100644
--- a/app/localization/translated/zh.json
+++ b/app/localization/translated/zh.json
@@ -84,8 +84,8 @@
"AddFilter.placeholderFilterName": "请输入过滤器名称",
"AddIntegrationModal.createGlobalTitle": "创建全局集成",
"AddIntegrationModal.createProjectTitle": "Create Project Integration",
- "AddIntegrationModal.editProjectIntegrationTitle": "Edit Project Integration",
"AddIntegrationModal.editGlobalIntegrationTitle": "Edit Global Integration",
+ "AddIntegrationModal.editProjectIntegrationTitle": "Edit Project Integration",
"AddNewCaseButton.addNewRuleButton": "创建规则",
"AddUserForm.addUserTitle": "添加用户",
"AddUserForm.generatePassword": "生成密码",
@@ -262,8 +262,6 @@
"Charts.testCasesCaption": "测试用例",
"Charts.total": "全部{type}",
"ClusterItemsGridRow.loadLabel": "加载更多",
- "ColorPicker.pickSwatch": "选择一个样本",
- "ColorPicker.selectColor": "选择您的颜色",
"CommandItem.commandTitle": "指令",
"CommandItem.parametersTitle": "参数",
"CommandItem.responseTitle": "响应",
@@ -725,6 +723,7 @@
"EventsGrid.userSearchPlaceholder": "请输入用户名",
"ExpandToggler.hideCriteria": "隐藏条件",
"ExpandToggler.showCriteria": "显示条件",
+ "ExtensionError.message": "The plugin has encountered a crash.
Await the reestablishment of the connection
or contact the administrator for assistance.",
"ExternalSystems.createIntegration": "已设置",
"ExternalSystems.deleteIntegration": "已删除",
"ExternalSystems.emailDefaultName": "电子邮件服务器",
@@ -736,7 +735,6 @@
"ExternalUserInvitationModal.email": "邀请已发送至",
"ExternalUserInvitationModal.header": "邀请用户",
"ExternalUserInvitationModal.link": "邀请链接",
- "ExtensionError.message": "The plugin has encountered a crash.
Await the reestablishment of the connection
or contact the administrator for assistance.",
"FailedCasesTrendChart.failedCases": "失败的用例",
"FailedCasesTrendControls.ItemsFieldLabel": "测试项",
"FailedCasesTrendControls.ItemsValidationError": "测试项的数量应该在1到600之间",
@@ -1029,7 +1027,6 @@
"IntegrationsList.bts": "缺陷跟踪系统",
"IntegrationsList.notification": "通知",
"IntegrationsList.other": "第三方",
- "IntegrationsTab.integrationsBreadcrumbTitle": "集成",
"InvestigatedPercentageOfLaunchesControls.ItemsFieldLabel": "测试项",
"InvestigatedPercentageOfLaunchesControls.ItemsValidationError": "测试项的数量应为1到600个",
"InviteUserModal.description": "为此项目邀请用户",
@@ -1543,6 +1540,7 @@
"PersonalInfo.memberAdmin": "管理员",
"PersonalInfo.memberYou": "您",
"PersonalInfoBlock.changePassword": "更改密码",
+ "PersonalInfoBlock.disabledChangePassword": "It's forbidden to change password for default user on Demo instance",
"PersonalInfoBlock.errorChangePassword": "错误! 无法更改密码。",
"PersonalInfoBlock.forceUpdate": "强制更新",
"PersonalInfoBlock.inProgress": "进行中",
@@ -1639,7 +1637,6 @@
"ProjectActivityControls.UsersPlaceholder": "请输入用户名",
"ProjectDetailsPageEvents.headerButton": "项目监控",
"ProjectDetailsPageMembers.headerButton": "项目成员",
- "ProjectDetailsPageSettings.headerButton": "项目设置",
"ProjectPanel.assign": "分配",
"ProjectPanel.delete": "删除",
"ProjectPanel.internal": "内部",
@@ -2177,4 +2174,4 @@
"usersGrid.roleNonAdmin": "非管理",
"usersGrid.type": "类型",
"usersGrid.user": "登录"
-}
+}
\ No newline at end of file
diff --git a/app/src/common/constants/accountRoles.js b/app/src/common/constants/accountRoles.js
index 04b56eda83..44bd666c63 100644
--- a/app/src/common/constants/accountRoles.js
+++ b/app/src/common/constants/accountRoles.js
@@ -16,6 +16,7 @@
export const USER = 'USER';
export const ADMINISTRATOR = 'ADMINISTRATOR';
+export const DEFAULT_USER_ID = 'default';
export const ACCOUNT_ROLES_MAP = [
{ value: USER, label: USER },
{ value: ADMINISTRATOR, label: ADMINISTRATOR },
diff --git a/app/src/pages/inside/profilePage/personalInfoBlock/personalInfoBlock.jsx b/app/src/pages/inside/profilePage/personalInfoBlock/personalInfoBlock.jsx
index 45f0996bc6..0c8ce2df18 100644
--- a/app/src/pages/inside/profilePage/personalInfoBlock/personalInfoBlock.jsx
+++ b/app/src/pages/inside/profilePage/personalInfoBlock/personalInfoBlock.jsx
@@ -23,11 +23,13 @@ import { defineMessages, injectIntl } from 'react-intl';
import { fetch } from 'common/utils';
import { URLS } from 'common/urls';
import { INTERNAL, LDAP, UPSA } from 'common/constants/accountType';
+import { DEFAULT_USER_ID } from 'common/constants/accountRoles';
import DefaultUserImage from 'common/img/default-user-avatar.png';
import { showNotification, NOTIFICATION_TYPES } from 'controllers/notification';
import { showModalAction } from 'controllers/modal';
import { userInfoSelector } from 'controllers/user';
import { logoutAction } from 'controllers/auth';
+import { isDemoInstanceSelector } from 'controllers/appInfo';
import { GhostButton } from 'components/buttons/ghostButton';
import { PROFILE_PAGE_EVENTS } from 'components/main/analytics/events';
import { Image } from 'components/main/image';
@@ -71,12 +73,17 @@ const messages = defineMessages({
id: 'PersonalInfoBlock.inProgress',
defaultMessage: 'In progress',
},
+ disabledChangePassword: {
+ id: 'PersonalInfoBlock.disabledChangePassword',
+ defaultMessage: "It's forbidden to change password for default user on Demo instance",
+ },
});
@connect(
(state) => ({
userId: userInfoSelector(state).userId,
accountType: userInfoSelector(state).accountType,
+ isDemoInstance: isDemoInstanceSelector(state),
}),
{
showNotification,
@@ -98,10 +105,12 @@ export class PersonalInfoBlock extends Component {
trackEvent: PropTypes.func,
getTrackingData: PropTypes.func,
}).isRequired,
+ isDemoInstance: PropTypes.bool,
};
static defaultProps = {
userId: '',
accountType: '',
+ isDemoInstance: false,
};
state = {
@@ -179,8 +188,10 @@ export class PersonalInfoBlock extends Component {
};
render() {
- const { intl, accountType, userId } = this.props;
+ const { intl, accountType, userId, isDemoInstance } = this.props;
const { forceUpdateInProgress } = this.state;
+ const isDefaultUser = userId === DEFAULT_USER_ID;
+ const isChangePasswordDisabled = isDemoInstance && isDefaultUser;
return (