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..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
@@ -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,18 @@ export class ContextMenuComponent implements OnInit {
});
}
+ resetPasswordHistory() {
+ 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')
+ );
+ });
+ }
+
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..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,6 +81,10 @@ export class MultidirectoryApiService {
return this.httpClient.post('auth/setup', request).execute();
}
+ resetPasswordHistory(username: string): Observable {
+ return this.httpClient.post('user/password_history/clear', username).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": "Отмена",