Clean up change password validation

pull/1018/merge
Chocobozzz 2018-09-05 14:59:15 +02:00
parent 4c8e4e04d1
commit b0ee41df7d
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 27 additions and 29 deletions

View File

@ -6,7 +6,6 @@
<input
type="password" id="new-password" i18n-placeholder placeholder="New password"
formControlName="new-password" [ngClass]="{ 'input-error': formErrors['new-password'] }"
(change)="validateNewPassword()" (blur)="printAnError()"
>
<div *ngIf="formErrors['new-password']" class="form-error">
{{ formErrors['new-password'] }}
@ -14,8 +13,11 @@
<input
type="password" id="new-confirmed-password" i18n-placeholder placeholder="Confirm new password"
formControlName="new-confirmed-password" (change)="validateNewPassword()" (blur)="printAnError()"
formControlName="new-confirmed-password"
>
<div *ngIf="formErrors['new-confirmed-password']" class="form-error">
{{ formErrors['new-confirmed-password'] }}
</div>
<input type="submit" i18n-value value="Change password" [disabled]="!form.valid || unsendable">
<input type="submit" i18n-value value="Change password" [disabled]="!form.valid">
</form>

View File

@ -4,6 +4,7 @@ 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'
@Component({
selector: 'my-account-change-password',
@ -12,7 +13,6 @@ 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
constructor (
protected formValidatorService: FormValidatorService,
@ -27,36 +27,23 @@ export class MyAccountChangePasswordComponent extends FormReactive implements On
ngOnInit () {
this.buildForm({
'new-password': this.userValidatorsService.USER_PASSWORD,
'new-confirmed-password': this.userValidatorsService.USER_PASSWORD
'new-confirmed-password': this.userValidatorsService.USER_CONFIRM_PASSWORD
})
}
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
}
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
}
this.userService.changePassword(this.form.value[ 'new-password' ]).subscribe(
() => {
this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.'))
this.userService.changePassword(this.form.value['new-password']).subscribe(
() => this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.')),
this.form.reset()
},
err => this.error = err.message
)

View File

@ -20,7 +20,6 @@ export class MyAccountComponent implements OnInit {
) {}
ngOnInit () {
console.log(this.router.url)
this.updateLibraryLabel(this.router.url)
this.router.events
@ -29,7 +28,9 @@ export class MyAccountComponent implements OnInit {
}
isVideoImportEnabled () {
return this.serverService.getConfig().import.videos.http.enabled
const importConfig = this.serverService.getConfig().import.videos
return importConfig.http.enabled || importConfig.torrent.enabled
}
private updateLibraryLabel (url: string) {

View File

@ -8,6 +8,7 @@ export class UserValidatorsService {
readonly USER_USERNAME: BuildFormValidator
readonly USER_EMAIL: BuildFormValidator
readonly USER_PASSWORD: BuildFormValidator
readonly USER_CONFIRM_PASSWORD: BuildFormValidator
readonly USER_VIDEO_QUOTA: BuildFormValidator
readonly USER_VIDEO_QUOTA_DAILY: BuildFormValidator
readonly USER_ROLE: BuildFormValidator
@ -55,6 +56,13 @@ export class UserValidatorsService {
}
}
this.USER_CONFIRM_PASSWORD = {
VALIDATORS: [],
MESSAGES: {
'matchPassword': this.i18n('The new password and the confirmed password do not correspond.')
}
}
this.USER_VIDEO_QUOTA = {
VALIDATORS: [ Validators.required, Validators.min(-1) ],
MESSAGES: {