16 changed files with 305 additions and 268 deletions
@ -1,64 +0,0 @@ |
|||||
<!-- |
|
||||
|
|
||||
Copyright © 2016-2022 The Thingsboard Authors |
|
||||
|
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
you may not use this file except in compliance with the License. |
|
||||
You may obtain a copy of the License at |
|
||||
|
|
||||
http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
|
|
||||
Unless required by applicable law or agreed to in writing, software |
|
||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
See the License for the specific language governing permissions and |
|
||||
limitations under the License. |
|
||||
|
|
||||
--> |
|
||||
<form [formGroup]="changePassword" (ngSubmit)="onChangePassword()"> |
|
||||
<mat-toolbar fxLayout="row" color="primary"> |
|
||||
<h2 translate>profile.change-password</h2> |
|
||||
<span fxFlex></span> |
|
||||
<button mat-icon-button |
|
||||
[mat-dialog-close]="false" |
|
||||
type="button"> |
|
||||
<mat-icon class="material-icons">close</mat-icon> |
|
||||
</button> |
|
||||
</mat-toolbar> |
|
||||
<mat-progress-bar color="warn" mode="indeterminate" *ngIf="isLoading$ | async"> |
|
||||
</mat-progress-bar> |
|
||||
<div style="height: 4px;" *ngIf="!(isLoading$ | async)"></div> |
|
||||
<div mat-dialog-content> |
|
||||
<mat-form-field class="mat-block"> |
|
||||
<mat-label translate>profile.current-password</mat-label> |
|
||||
<input matInput type="password" formControlName="currentPassword"/> |
|
||||
<mat-icon class="material-icons" matPrefix>lock</mat-icon> |
|
||||
<tb-toggle-password matSuffix></tb-toggle-password> |
|
||||
</mat-form-field> |
|
||||
<mat-form-field class="mat-block"> |
|
||||
<mat-label translate>login.new-password</mat-label> |
|
||||
<input matInput type="password" formControlName="newPassword"/> |
|
||||
<mat-icon class="material-icons" matPrefix>lock</mat-icon> |
|
||||
<tb-toggle-password matSuffix></tb-toggle-password> |
|
||||
</mat-form-field> |
|
||||
<mat-form-field class="mat-block"> |
|
||||
<mat-label translate>login.new-password-again</mat-label> |
|
||||
<input matInput type="password" formControlName="newPassword2"/> |
|
||||
<mat-icon class="material-icons" matPrefix>lock</mat-icon> |
|
||||
<tb-toggle-password matSuffix></tb-toggle-password> |
|
||||
</mat-form-field> |
|
||||
</div> |
|
||||
<div mat-dialog-actions fxLayout="row" fxLayoutAlign="end center"> |
|
||||
<button mat-button color="primary" |
|
||||
type="button" |
|
||||
[disabled]="(isLoading$ | async)" |
|
||||
[mat-dialog-close]="false" cdkFocusInitial> |
|
||||
{{ 'action.cancel' | translate }} |
|
||||
</button> |
|
||||
<button mat-raised-button color="primary" |
|
||||
type="submit" |
|
||||
[disabled]="(isLoading$ | async) || changePassword.invalid"> |
|
||||
{{ 'profile.change-password' | translate }} |
|
||||
</button> |
|
||||
</div> |
|
||||
</form> |
|
||||
@ -1,17 +0,0 @@ |
|||||
/** |
|
||||
* Copyright © 2016-2022 The Thingsboard Authors |
|
||||
* |
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
* you may not use this file except in compliance with the License. |
|
||||
* You may obtain a copy of the License at |
|
||||
* |
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
* |
|
||||
* Unless required by applicable law or agreed to in writing, software |
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
* See the License for the specific language governing permissions and |
|
||||
* limitations under the License. |
|
||||
*/ |
|
||||
:host { |
|
||||
} |
|
||||
@ -1,70 +0,0 @@ |
|||||
///
|
|
||||
/// Copyright © 2016-2022 The Thingsboard Authors
|
|
||||
///
|
|
||||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||
/// you may not use this file except in compliance with the License.
|
|
||||
/// You may obtain a copy of the License at
|
|
||||
///
|
|
||||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
///
|
|
||||
/// Unless required by applicable law or agreed to in writing, software
|
|
||||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||
/// See the License for the specific language governing permissions and
|
|
||||
/// limitations under the License.
|
|
||||
///
|
|
||||
|
|
||||
import { Component, OnInit } from '@angular/core'; |
|
||||
import { MatDialogRef } from '@angular/material/dialog'; |
|
||||
import { Store } from '@ngrx/store'; |
|
||||
import { AppState } from '@core/core.state'; |
|
||||
import { FormBuilder, FormGroup } from '@angular/forms'; |
|
||||
import { ActionNotificationShow } from '@core/notification/notification.actions'; |
|
||||
import { TranslateService } from '@ngx-translate/core'; |
|
||||
import { AuthService } from '@core/auth/auth.service'; |
|
||||
import { DialogComponent } from '@shared/components/dialog.component'; |
|
||||
import { Router } from '@angular/router'; |
|
||||
|
|
||||
@Component({ |
|
||||
selector: 'tb-change-password-dialog', |
|
||||
templateUrl: './change-password-dialog.component.html', |
|
||||
styleUrls: ['./change-password-dialog.component.scss'] |
|
||||
}) |
|
||||
export class ChangePasswordDialogComponent extends DialogComponent<ChangePasswordDialogComponent> implements OnInit { |
|
||||
|
|
||||
changePassword: FormGroup; |
|
||||
|
|
||||
constructor(protected store: Store<AppState>, |
|
||||
protected router: Router, |
|
||||
private translate: TranslateService, |
|
||||
private authService: AuthService, |
|
||||
public dialogRef: MatDialogRef<ChangePasswordDialogComponent>, |
|
||||
public fb: FormBuilder) { |
|
||||
super(store, router, dialogRef); |
|
||||
} |
|
||||
|
|
||||
ngOnInit(): void { |
|
||||
this.buildChangePasswordForm(); |
|
||||
} |
|
||||
|
|
||||
buildChangePasswordForm() { |
|
||||
this.changePassword = this.fb.group({ |
|
||||
currentPassword: [''], |
|
||||
newPassword: [''], |
|
||||
newPassword2: [''] |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
onChangePassword(): void { |
|
||||
if (this.changePassword.get('newPassword').value !== this.changePassword.get('newPassword2').value) { |
|
||||
this.store.dispatch(new ActionNotificationShow({ message: this.translate.instant('login.passwords-mismatch-error'), |
|
||||
type: 'error' })); |
|
||||
} else { |
|
||||
this.authService.changePassword( |
|
||||
this.changePassword.get('currentPassword').value, |
|
||||
this.changePassword.get('newPassword').value).subscribe(() => { |
|
||||
this.dialogRef.close(true); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue