Não está mais autenticando e consequentemente, não retorna o Token Estou utilizando um Json, nomeado Login, utilizando o Json Server, na porta 3002 com a seguinte estrutura para realizar a autenticação.
Eu realmente não gosto de utilizar os mesmos nomes do professor, me desculpa por isso, mas acredito que desta maneira, fazendo meu cérebro pensar eu aprendo mais e tiro a sensação de copiar e colar.
{
"id": "3",
"UsuarioLogin": "thyago.estrada@teste.com",
"UsuarioSenha": "hiena"
}
Segue o login.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { tap } from 'rxjs/operators'
const API_URL = "http://localhost:3002/Login";
@Injectable({providedIn: 'root'})
export class LoginService {
constructor(private http: HttpClient) { }
authenticate(UsuarioLogin: string, UsuarioSenha: string) {
return this.http.post(API_URL, { UsuarioLogin, UsuarioSenha }, {observe: "response"} )
.pipe(tap(resposta =>{
const loginToken = resposta.headers.get('x-access-token');
console.log(`User ${UsuarioLogin} authenticated with token ${loginToken}`);
Segue o login.component.html:
<form [formGroup]="loginform" (Submit)="login()" class="text-left mt-4">
<div class="form-group">
<input formControlName="email" class="form-control validation-field" placeholder="Email" type="text">
<small class="text-danger" *ngIf="loginform.get('email').touched && loginform.get('email').hasError('required')">Endereço de email</small>
<small class="text-danger" *ngIf="loginform.get('email').touched && loginform.get('email').hasError('email')">Email inválido</small>
</div>
<div class="form-group">
<input formControlName="password" class="form-control validation-field" placeholder="Password" type="password">
<small class="text-danger" *ngIf="loginform.get('password').touched && loginform.get('password').hasError('required')">Coloque a senha</small>
<small class="text-danger" *ngIf="loginform.get('password').touched && loginform.get('password').hasError('minlength')">Senha muito curta, mínimo de f 6 caracteres</small>
</div>
<div class="form-group d-flex justify-content-between">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="login-checkbox">
<label class="custom-control-label" for="login-checkbox">Mantenha-me Logado.</label>
</div>
<a class="transition pull-right" href="javascript:void(0);">Esqueceu sua senha?</a>
</div>
<div class="form-group">
<button [disabled]="!loginform.valid" class="btn btn-block" (click)="login()" type="submit"routerLink="/dashboard">Entrar</button>
</div>
</form>
Segue o login.component.ts
import { Component, ViewEncapsulation } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormControl, FormBuilder, Validators} from '@angular/forms';
import { LoginService } from './login.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class LoginComponent {
public router: Router;
public form:FormGroup;
loginform: FormGroup;
constructor(
public formbuilder:FormBuilder,
private LoginService:LoginService) {
}
ngOnInit(): void {
this.loginform = this.formbuilder.group({
'email': ['', Validators.compose([Validators.required ])],
'password': ['', Validators.compose([Validators.required, Validators.minLength(3)])]
});
}
login(){
const UsuarioLogin = this.loginform.get('email').value;
const UsuarioSenha = this.loginform.get('password').value;
this.LoginService.authenticate(UsuarioLogin, UsuarioSenha)
.subscribe(() => console.log('autenticado'),
err => {
console.log(err);
this.loginform.reset();
}
);
}
}
}
Estou adorando o curso, mas realmente dei uma empacada.