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 <input
type="password" id="new-password" i18n-placeholder placeholder="New password" type="password" id="new-password" i18n-placeholder placeholder="New password"
formControlName="new-password" [ngClass]="{ 'input-error': formErrors['new-password'] }" formControlName="new-password" [ngClass]="{ 'input-error': formErrors['new-password'] }"
(change)="validateNewPassword()" (blur)="printAnError()"
> >
<div *ngIf="formErrors['new-password']" class="form-error"> <div *ngIf="formErrors['new-password']" class="form-error">
{{ formErrors['new-password'] }} {{ formErrors['new-password'] }}
@ -14,8 +13,11 @@
<input <input
type="password" id="new-confirmed-password" i18n-placeholder placeholder="Confirm new password" 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> </form>

View File

@ -4,6 +4,7 @@ import { FormReactive, UserService } from '../../../shared'
import { I18n } from '@ngx-translate/i18n-polyfill' import { I18n } from '@ngx-translate/i18n-polyfill'
import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service'
import { filter } from 'rxjs/operators'
@Component({ @Component({
selector: 'my-account-change-password', 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 { export class MyAccountChangePasswordComponent extends FormReactive implements OnInit {
error: string = null error: string = null
unsendable = true // default to true to not have to not the if in change password
constructor ( constructor (
protected formValidatorService: FormValidatorService, protected formValidatorService: FormValidatorService,
@ -27,36 +27,23 @@ export class MyAccountChangePasswordComponent extends FormReactive implements On
ngOnInit () { ngOnInit () {
this.buildForm({ this.buildForm({
'new-password': this.userValidatorsService.USER_PASSWORD, 'new-password': this.userValidatorsService.USER_PASSWORD,
'new-confirmed-password': this.userValidatorsService.USER_PASSWORD 'new-confirmed-password': this.userValidatorsService.USER_CONFIRM_PASSWORD
}) })
}
validateNewPassword () { const confirmPasswordControl = this.form.get('new-confirmed-password')
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
}
printAnError () { confirmPasswordControl.valueChanges
console.log(this.unsendable) .pipe(filter(v => v !== this.form.value[ 'new-password' ]))
this.validateNewPassword() .subscribe(() => confirmPasswordControl.setErrors({ matchPassword: true }))
if (this.unsendable) {
this.error = this.i18n('The new password and the confirmed password do not correspond.')
}
} }
changePassword () { changePassword () {
if (this.unsendable) {
return
}
this.userService.changePassword(this.form.value[ 'new-password' ]).subscribe( this.userService.changePassword(this.form.value[ 'new-password' ]).subscribe(
() => this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.')), () => {
this.notificationsService.success(this.i18n('Success'), this.i18n('Password updated.'))
this.form.reset()
},
err => this.error = err.message err => this.error = err.message
) )

View File

@ -20,7 +20,6 @@ export class MyAccountComponent implements OnInit {
) {} ) {}
ngOnInit () { ngOnInit () {
console.log(this.router.url)
this.updateLibraryLabel(this.router.url) this.updateLibraryLabel(this.router.url)
this.router.events this.router.events
@ -29,7 +28,9 @@ export class MyAccountComponent implements OnInit {
} }
isVideoImportEnabled () { 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) { private updateLibraryLabel (url: string) {

View File

@ -8,6 +8,7 @@ export class UserValidatorsService {
readonly USER_USERNAME: BuildFormValidator readonly USER_USERNAME: BuildFormValidator
readonly USER_EMAIL: BuildFormValidator readonly USER_EMAIL: BuildFormValidator
readonly USER_PASSWORD: BuildFormValidator readonly USER_PASSWORD: BuildFormValidator
readonly USER_CONFIRM_PASSWORD: BuildFormValidator
readonly USER_VIDEO_QUOTA: BuildFormValidator readonly USER_VIDEO_QUOTA: BuildFormValidator
readonly USER_VIDEO_QUOTA_DAILY: BuildFormValidator readonly USER_VIDEO_QUOTA_DAILY: BuildFormValidator
readonly USER_ROLE: 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 = { this.USER_VIDEO_QUOTA = {
VALIDATORS: [ Validators.required, Validators.min(-1) ], VALIDATORS: [ Validators.required, Validators.min(-1) ],
MESSAGES: { MESSAGES: {