Login works

This commit is contained in:
Daniel 2024-10-31 23:53:01 -04:00
parent dc9f7eb7fb
commit f075e49d1e
3 changed files with 21 additions and 20 deletions

View file

@ -1,8 +1,8 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import {HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http'; import {HttpClient, HttpResponse } from '@angular/common/http';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { catchError } from 'rxjs/operators'; import { Observable } from 'rxjs';
import { Observable, ObservableInput } from 'rxjs'; import { tap } from 'rxjs/operators';
export class Jwt { export class Jwt {
constructor( constructor(
@ -18,19 +18,12 @@ export class APIService {
} }
login(failFunc: () => void, username: string, password: string) { login(username: string, password: string): Observable<HttpResponse<Jwt>> {
let ff = (err: any, caught: Observable<HttpResponse<Jwt>>): ObservableInput<any> => { return this.http.post<Jwt>('/login', {username: username, password: password}, {observe: 'response'}).pipe(tap((event) => {
console.log(err);
failFunc();
return caught.pipe();
};
this.http.post<Jwt>('/login', {username: username, password: password}, {observe: 'response'}).pipe(catchError(ff)).subscribe(event => {
if (event.status == 200) { if (event.status == 200) {
sessionStorage.setItem('jwt', event.body?.jwt.toString() ?? ''); sessionStorage.setItem('jwt', event.body?.jwt.toString() ?? '');
this._router.navigateByUrl('/home'); this._router.navigateByUrl('/home');
} else {
failFunc();
} }
}); }));
} }
} }

View file

@ -14,8 +14,8 @@
</div> </div>
</div> </div>
@if (failed) { @if (failed) {
<div> <div role="alert" class="alert alert-error">
Login Failed <span>Login Failed!</span>
</div> </div>
} }
</div> </div>

View file

@ -1,6 +1,8 @@
import { Component, inject } from '@angular/core'; import { Component, inject } from '@angular/core';
import {FormsModule} from '@angular/forms'; import {FormsModule} from '@angular/forms';
import {APIService} from '../api.service'; import {APIService} from '../api.service';
import {catchError, of } from 'rxjs';
import { Router } from '@angular/router';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
@ -11,16 +13,22 @@ import {APIService} from '../api.service';
}) })
export class LoginComponent { export class LoginComponent {
apiService: APIService = inject(APIService); apiService: APIService = inject(APIService);
router: Router = inject(Router);
username: string = ''; username: string = '';
password: string = ''; password: string = '';
failed: boolean = false; failed: boolean = false;
failLogin() {
failed = true;
}
onSubmit() { onSubmit() {
this.failed = false; this.failed = false;
this.apiService.login(this.failLogin, this.username, this.password); this.apiService.login(this.username, this.password).pipe(catchError(() => {
this.failed = true;
return of(null);
})).subscribe((event) => {
if (event?.status == 200) {
this.router.navigateByUrl('/home')
} else {
this.failed = true;
}
});
} }
} }