X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bmy-account%2Fmy-account-settings%2Fmy-account-change-password%2Fmy-account-change-password.component.ts;h=47e54dc23110dbb3fc0febbaaaf122cf928b40a6;hb=5b0ec7cddb1ae6dbd2057f067382866f846b882c;hp=0707d8f9ae62d15bcdca64c3969f0ff7732417c4;hpb=a94419a604f324305c9dbb607496a5bca9b63d04;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 0707d8f9a..47e54dc23 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,9 +1,13 @@ +import { filter } from 'rxjs/operators' import { Component, OnInit } from '@angular/core' -import { NotificationsService } from 'angular2-notifications' -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 { AuthService, Notifier, UserService } from '@app/core' +import { + USER_CONFIRM_PASSWORD_VALIDATOR, + USER_EXISTING_PASSWORD_VALIDATOR, + USER_PASSWORD_VALIDATOR +} from '@app/shared/form-validators/user-validators' +import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' +import { User } from '@shared/models' @Component({ selector: 'my-account-change-password', @@ -12,53 +16,54 @@ import { UserValidatorsService } from '@app/shared/forms/form-validators/user-va }) export class MyAccountChangePasswordComponent extends FormReactive implements OnInit { error: string = null - unsendable = true // default to true to not have to not the if in change password + user: User = null constructor ( protected formValidatorService: FormValidatorService, - private userValidatorsService: UserValidatorsService, - private notificationsService: NotificationsService, - private userService: UserService, - private i18n: I18n + private notifier: Notifier, + private authService: AuthService, + private userService: UserService ) { super() } ngOnInit () { this.buildForm({ - 'new-password': this.userValidatorsService.USER_PASSWORD, - 'new-confirmed-password': this.userValidatorsService.USER_PASSWORD + 'current-password': USER_EXISTING_PASSWORD_VALIDATOR, + 'new-password': USER_PASSWORD_VALIDATOR, + 'new-confirmed-password': USER_CONFIRM_PASSWORD_VALIDATOR }) - } - validateNewPassword () { - if (this.form.value['new-password'] && this.form.value['new-confirmed-password']) { - if (this.form.value['new-password'] === this.form.value['new-confirmed-password']) { - this.error = null - this.unsendable = false - return - } - } - this.unsendable = true - } + this.user = this.authService.getUser() + + const confirmPasswordControl = this.form.get('new-confirmed-password') - printAnError () { - console.log(this.unsendable) - this.validateNewPassword() - if (this.unsendable) { - this.error = this.i18n('The new password and the confirmed password do not correspond.') - } + confirmPasswordControl.valueChanges + .pipe(filter(v => v !== this.form.value['new-password'])) + .subscribe(() => confirmPasswordControl.setErrors({ matchPassword: true })) } changePassword () { - if (this.unsendable) { - return - } + const currentPassword = this.form.value['current-password'] + const newPassword = this.form.value['new-password'] + + this.userService.changePassword(currentPassword, newPassword) + .subscribe({ + next: () => { + this.notifier.success($localize`Password updated.`) + + this.form.reset() + this.error = null + }, - this.userService.changePassword(this.form.value['new-password']).subscribe( - () => this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.')), + error: err => { + if (err.status === 401) { + this.error = $localize`You current password is invalid.` + return + } - err => this.error = err.message - ) + this.error = err.message + } + }) } }