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": "Отмена",