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

22 lines
829 B
TypeScript

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { mergeMap } from 'rxjs/operators';
import { Account } from 'app/core/auth/account.model';
import { AccountService } from 'app/core/auth/account.service';
import { AuthServerProvider } from 'app/core/auth/auth-jwt.service';
import { Login } from './login.model';
@Injectable({ providedIn: 'root' })
export class LoginService {
constructor(private accountService: AccountService, private authServerProvider: AuthServerProvider) {}
login(credentials: Login): Observable<Account | null> {
return this.authServerProvider.login(credentials).pipe(mergeMap(() => this.accountService.identity(true)));
}
logout(): void {
this.authServerProvider.logout().subscribe({ complete: () => this.accountService.authenticate(null) });
}
}