mirror of https://github.com/Chocobozzz/PeerTube
80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
|
import { Component, OnInit } from '@angular/core'
|
||
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms'
|
||
|
import { ActivatedRoute, Router } from '@angular/router'
|
||
|
import { USER_PASSWORD, UserService } from '@app/shared'
|
||
|
import { NotificationsService } from 'angular2-notifications'
|
||
|
import { AuthService } from '../core'
|
||
|
import { FormReactive } from '../shared'
|
||
|
|
||
|
@Component({
|
||
|
selector: 'my-login',
|
||
|
templateUrl: './reset-password.component.html',
|
||
|
styleUrls: [ './reset-password.component.scss' ]
|
||
|
})
|
||
|
|
||
|
export class ResetPasswordComponent extends FormReactive implements OnInit {
|
||
|
form: FormGroup
|
||
|
formErrors = {
|
||
|
'password': '',
|
||
|
'password-confirm': ''
|
||
|
}
|
||
|
validationMessages = {
|
||
|
'password': USER_PASSWORD.MESSAGES,
|
||
|
'password-confirm': {
|
||
|
'required': 'Confirmation of the password is required.'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private userId: number
|
||
|
private verificationString: string
|
||
|
|
||
|
constructor (
|
||
|
private authService: AuthService,
|
||
|
private userService: UserService,
|
||
|
private notificationsService: NotificationsService,
|
||
|
private formBuilder: FormBuilder,
|
||
|
private router: Router,
|
||
|
private route: ActivatedRoute
|
||
|
) {
|
||
|
super()
|
||
|
}
|
||
|
|
||
|
buildForm () {
|
||
|
this.form = this.formBuilder.group({
|
||
|
password: [ '', USER_PASSWORD.VALIDATORS ],
|
||
|
'password-confirm': [ '', Validators.required ]
|
||
|
})
|
||
|
|
||
|
this.form.valueChanges.subscribe(data => this.onValueChanged(data))
|
||
|
}
|
||
|
|
||
|
ngOnInit () {
|
||
|
this.buildForm()
|
||
|
|
||
|
this.userId = this.route.snapshot.queryParams['userId']
|
||
|
this.verificationString = this.route.snapshot.queryParams['verificationString']
|
||
|
|
||
|
if (!this.userId || !this.verificationString) {
|
||
|
this.notificationsService.error('Error', 'Unable to find user id or verification string.')
|
||
|
this.router.navigate([ '/' ])
|
||
|
}
|
||
|
}
|
||
|
|
||
|
resetPassword () {
|
||
|
this.userService.resetPassword(this.userId, this.verificationString, this.form.value.password)
|
||
|
.subscribe(
|
||
|
() => {
|
||
|
this.notificationsService.success('Success', 'Your password has been successfully reset!')
|
||
|
this.router.navigate([ '/login' ])
|
||
|
},
|
||
|
|
||
|
err => this.notificationsService.error('Error', err.message)
|
||
|
)
|
||
|
}
|
||
|
|
||
|
isConfirmedPasswordValid () {
|
||
|
const values = this.form.value
|
||
|
return values.password === values['password-confirm']
|
||
|
}
|
||
|
}
|