From de2e4588ed9fd5889a594678051b12b7e6b2e007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D0=BE=D1=84=D0=B5=D0=B9=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2?= Date: Mon, 19 Jan 2026 15:30:58 +0300 Subject: [PATCH 1/2] MD-1137 --- .../core/context-menu/context-menu.component.html | 4 ++++ .../core/context-menu/context-menu.component.ts | 10 ++++++++++ .../src/app/services/multidirectory-api.service.ts | 4 ++++ projects/multidirectory-app/src/assets/i18n/en-US.json | 2 ++ projects/multidirectory-app/src/assets/i18n/ru-RU.json | 2 ++ 5 files changed, 22 insertions(+) diff --git a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.html b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.html index e2688f6b..e642d077 100644 --- a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.html +++ b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.html @@ -7,6 +7,10 @@
{{ 'catalog-content.change-password' | transloco }}
+ +
+ {{ 'catalog-content.reset-password-history' | transloco }} +
} @if (isSelectedRowsOfType(LdapEntryType.User, LdapEntryType.Computer) && accountEnabled) { diff --git a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts index 0e6106a3..67b9136f 100644 --- a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts +++ b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts @@ -32,6 +32,7 @@ import { ConfirmDeleteDialogComponent } from '../../dialogs/confirm-delete-dialo import { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component'; import { EntityPropertiesDialogComponent } from '../../dialogs/entity-properties-dialog/entity-properties-dialog.component'; import { MoveEntityDialogComponent } from '../../dialogs/move-entity-dialog/move-entity-dialog.component'; +import { ToastrService } from 'ngx-toastr'; @Component({ selector: 'app-context-menu', @@ -54,6 +55,7 @@ export class ContextMenuComponent implements OnInit { private ldapTreeview = inject(LdapTreeviewService); private navigation = inject(AppNavigationService); private bulk: BulkService = inject(BulkService); + private toastr = inject(ToastrService); private getAccessorStrategy: GetAccessorStrategy = inject(GetAccessorStrategy); private completeUpdateEntiresStrategy: CompleteUpdateEntiresStrategies = inject(CompleteUpdateEntiresStrategies); private contextMenuData: ContextMenuData = inject(DIALOG_DATA); @@ -98,6 +100,14 @@ export class ContextMenuComponent implements OnInit { }); } + resetPasswordHistory() { + this.api.resetPasswordHistory().subscribe(() => { + this.toastr.success( + translate('catalog-content.reset-password-history-success') + ); + }); + } + toggleAccount(enabled: boolean) { this.contextMenuService.close( this.bulk diff --git a/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts b/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts index d5fd8f4e..c976d669 100644 --- a/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts +++ b/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts @@ -81,6 +81,10 @@ export class MultidirectoryApiService { return this.httpClient.post('auth/setup', request).execute(); } + resetPasswordHistory(): Observable { + return this.httpClient.post('user/password_history/clear', {}).execute(); + } + kerberosTreeSetup(request: KerberosTreeSetupRequest): Observable { return this.httpClient.post('kerberos/setup/tree', request).execute(); } diff --git a/projects/multidirectory-app/src/assets/i18n/en-US.json b/projects/multidirectory-app/src/assets/i18n/en-US.json index 0e885713..f4c93e31 100644 --- a/projects/multidirectory-app/src/assets/i18n/en-US.json +++ b/projects/multidirectory-app/src/assets/i18n/en-US.json @@ -219,6 +219,8 @@ "ou": "Organizational unit", "rule": "Rule", "folder": "Catalog", + "reset-password-history": "Reset password history", + "reset-password-history-success": "Password history has been reset successfully", "common-folder": "a shared folder", "printer": "Printer", "user": "User", diff --git a/projects/multidirectory-app/src/assets/i18n/ru-RU.json b/projects/multidirectory-app/src/assets/i18n/ru-RU.json index ec464781..ff14dba5 100644 --- a/projects/multidirectory-app/src/assets/i18n/ru-RU.json +++ b/projects/multidirectory-app/src/assets/i18n/ru-RU.json @@ -223,6 +223,8 @@ "common-folder": "Общая папка", "printer": "Принтер", "user": "Пользователь", + "reset-password-history": "Сбросить историю паролей", + "reset-password-history-success": "История паролей успешно сброшена", "approve-delete-header": "Требуется подтвержение", "approve-delete": "Вы действительно хотите удалить объект?", "cancel": "Отмена", From b41b04455c0eb70224d914a92c433d8fa20e6ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D0=BE=D1=84=D0=B5=D0=B9=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2?= Date: Mon, 19 Jan 2026 15:46:19 +0300 Subject: [PATCH 2/2] MD-1137 --- .../components/core/context-menu/context-menu.component.ts | 6 +++++- .../src/app/services/multidirectory-api.service.ts | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts index 67b9136f..69de5310 100644 --- a/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts +++ b/projects/multidirectory-app/src/app/components/modals/components/core/context-menu/context-menu.component.ts @@ -101,7 +101,11 @@ export class ContextMenuComponent implements OnInit { } resetPasswordHistory() { - this.api.resetPasswordHistory().subscribe(() => { + this.contextMenuService.close(null); + + const user = this.entries[0]; + const username = user.name; + this.api.resetPasswordHistory(username).subscribe(() => { this.toastr.success( translate('catalog-content.reset-password-history-success') ); diff --git a/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts b/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts index c976d669..c80ea9d6 100644 --- a/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts +++ b/projects/multidirectory-app/src/app/services/multidirectory-api.service.ts @@ -81,8 +81,8 @@ export class MultidirectoryApiService { return this.httpClient.post('auth/setup', request).execute(); } - resetPasswordHistory(): Observable { - return this.httpClient.post('user/password_history/clear', {}).execute(); + resetPasswordHistory(username: string): Observable { + return this.httpClient.post('user/password_history/clear', username).execute(); } kerberosTreeSetup(request: KerberosTreeSetupRequest): Observable {