Files
hexagonal-architecture-starter/sportshub-gui/src/app/components/login/login.service.ts
2023-12-05 14:31:07 +01:00

37 lines
1.2 KiB
TypeScript

import {Injectable} from "@angular/core";
import {UserRestService} from "../../core/rest-services/user.rest-service";
import {LoginRequest} from "../../core/model/login-request";
import {Subject} from "rxjs";
import {MessageService} from "../../core/services/message.service";
import {AuthenticationService} from "../../core/services/authentication.service";
import {Router} from "@angular/router";
@Injectable()
export class LoginService {
private isLoginPending: Subject<boolean> = new Subject<boolean>();
constructor(
private authenticationService: AuthenticationService,
private messageService: MessageService,
private router: Router,
private userRestService: UserRestService
) {}
login(loginRequest: LoginRequest): void {
this.isLoginPending.next(true);
this.userRestService.login(loginRequest)
.then(loginResponse => {
this.messageService.display('Login success!');
this.authenticationService.setAuthenticated(loginResponse);
this.router.navigate(['/']);
})
.catch(error => {
if (error.status === 400) {
this.messageService.display('Login or password incorrect.')
} else {
this.messageService.display('An error occured while login.')
}
});
}
}