57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
|
|
|
import { AuthService } from './../../services/auth.service';
|
|
import { Router } from '@angular/router';
|
|
|
|
var openpgp = require('openpgp');
|
|
@Component({
|
|
selector: 'app-password',
|
|
templateUrl: './password.component.html',
|
|
styleUrls: [ './password.component.scss' ]
|
|
})
|
|
export class PasswordComponent implements OnInit {
|
|
|
|
model: any = {};
|
|
public working: boolean;
|
|
form: FormGroup;
|
|
|
|
constructor(private formBuilder: FormBuilder, private authService: AuthService, private router: Router) { }
|
|
|
|
ngOnInit(): void {
|
|
this.form = this.formBuilder.group({
|
|
username: [ '', Validators.required ],
|
|
privateKey: [ '' ]
|
|
});
|
|
}
|
|
|
|
async passwordRequest() {
|
|
this.working = true;
|
|
const { keys: [ privateKey ] } = await openpgp.key.readArmored(this.model.privateKey);
|
|
|
|
const model = {
|
|
username: this.model.username
|
|
}
|
|
|
|
this.authService.passwordRequest(this.model.username).subscribe({
|
|
next: async response => {
|
|
|
|
if (privateKey) {
|
|
const message = await openpgp.message.readArmored(response);
|
|
|
|
const decrypted = await openpgp.decrypt({
|
|
message: message,
|
|
privateKeys: [ privateKey ]
|
|
});
|
|
this.working = false;
|
|
this.router.navigate([ '/password-reset' ], { queryParams: { token: decrypted.data.trim() } });
|
|
} else {
|
|
this.working = false;
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
}
|