X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2F%2Bmy-account%2Fmy-account-settings%2Fmy-account-change-password%2Fmy-account-change-password.component.ts;h=e5343b33d6798bce06fdc9ff9e9c9ca121227451;hb=a890d1e0d30851741392e6e7f14acffe685d28e0;hp=56e644f39639e93fcf4a53c309aeb95aca7f3d2a;hpb=d18d64787b3ea174f7dc2740c8c8c9555625047e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts b/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts index 56e644f39..e5343b33d 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts +++ b/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts @@ -1,8 +1,12 @@ import { Component, OnInit } from '@angular/core' import { NotificationsService } from 'angular2-notifications' -import { FormReactive, USER_PASSWORD, UserService } from '../../../shared' +import { FormReactive, UserService } from '../../../shared' import { I18n } from '@ngx-translate/i18n-polyfill' import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' +import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' +import { filter } from 'rxjs/operators' +import { AuthService } from '@app/core' +import { User } from '../../../../../../shared' @Component({ selector: 'my-account-change-password', @@ -11,10 +15,13 @@ import { FormValidatorService } from '@app/shared/forms/form-validators/form-val }) export class MyAccountChangePasswordComponent extends FormReactive implements OnInit { error: string = null + user: User = null constructor ( protected formValidatorService: FormValidatorService, + private userValidatorsService: UserValidatorsService, private notificationsService: NotificationsService, + private authService: AuthService, private userService: UserService, private i18n: I18n ) { @@ -23,26 +30,40 @@ export class MyAccountChangePasswordComponent extends FormReactive implements On ngOnInit () { this.buildForm({ - 'new-password': USER_PASSWORD, - 'new-confirmed-password': USER_PASSWORD + 'current-password': this.userValidatorsService.USER_PASSWORD, + 'new-password': this.userValidatorsService.USER_PASSWORD, + 'new-confirmed-password': this.userValidatorsService.USER_CONFIRM_PASSWORD }) + + this.user = this.authService.getUser() + + const confirmPasswordControl = this.form.get('new-confirmed-password') + + confirmPasswordControl.valueChanges + .pipe(filter(v => v !== this.form.value[ 'new-password' ])) + .subscribe(() => confirmPasswordControl.setErrors({ matchPassword: true })) } changePassword () { - const newPassword = this.form.value['new-password'] - const newConfirmedPassword = this.form.value['new-confirmed-password'] + const currentPassword = this.form.value[ 'current-password' ] + const newPassword = this.form.value[ 'new-password' ] - this.error = null + this.userService.changePassword(currentPassword, newPassword).subscribe( + () => { + this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.')) - if (newPassword !== newConfirmedPassword) { - this.error = this.i18n('The new password and the confirmed password do not correspond.') - return - } + this.form.reset() + this.error = null + }, - this.userService.changePassword(newPassword).subscribe( - () => this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.')), + err => { + if (err.status === 401) { + this.error = this.i18n('You current password is invalid.') + return + } - err => this.error = err.message + this.error = err.message + } ) } }