datasurvey/src/main/webapp/app/login/login.component.ts

64 lines
1.8 KiB
TypeScript

import { Component, ViewChild, OnInit, AfterViewInit, ElementRef } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { LoginService } from 'app/login/login.service';
import { AccountService } from 'app/core/auth/account.service';
@Component({
selector: 'jhi-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss'],
})
export class LoginComponent implements OnInit, AfterViewInit {
@ViewChild('username', { static: false })
username!: ElementRef;
authenticationError = false;
loginForm = this.fb.group({
username: [null, [Validators.required]],
password: [null, [Validators.required]],
rememberMe: [false],
});
constructor(
private accountService: AccountService,
private loginService: LoginService,
private router: Router,
private fb: FormBuilder
) {}
ngOnInit(): void {
// if already authenticated then navigate to home page
this.accountService.identity().subscribe(() => {
if (this.accountService.isAuthenticated()) {
this.router.navigate(['']);
}
});
}
ngAfterViewInit(): void {
this.username.nativeElement.focus();
}
login(): void {
this.loginService
.login({
username: this.loginForm.get('username')!.value,
password: this.loginForm.get('password')!.value,
rememberMe: this.loginForm.get('rememberMe')!.value,
})
.subscribe(
() => {
this.authenticationError = false;
if (!this.router.getCurrentNavigation()) {
// There were no routing during login (eg from navigationToStoredUrl)
this.router.navigate(['']);
}
},
() => (this.authenticationError = true)
);
}
}