Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 7x 7x 7x 7x 7x 7x 4x 6x 6x | import { Injectable, Injector } from "@angular/core";
import { environment } from "@environment";
import { Observable, of, tap } from "rxjs";
import { Account } from "./account.interface";
import { LoginProvider } from "./login-service.interface";
import { MSALLoginService } from "./msal-login/msal-login.service";
@Injectable({
providedIn: "root",
})
export class LoginService implements LoginProvider {
service!: LoginProvider;
account: Account | undefined;
constructor (private readonly injector: Injector) { }
setService () {
this.service = this.injector.get(MSALLoginService);
}
isLoggedIn () {
return !environment.msal || !!(this.service && this.service.getAccount());
}
loginWithProvider (provider: "msal" | "dummy") {
localStorage.setItem("login-provider", provider);
this.setService();
this.service?.init().subscribe(() => this.service?.login());
}
init (): Observable<void> {
if(!environment.msal)
return of();
this.setService();
return this.service!.init().pipe(tap(() => {
this.account = this.service!.getAccount();
}));
}
handleSuccess (callback?: (() => void) | undefined): void {
this.service.handleSuccess(callback);
}
login (): Promise<void> {
return this.service.login();
}
logout (): void {
this.service.logout();
}
getAccount (): Account | undefined {
return this.service.getAccount();
}
getToken (): Observable<string> {
return this.service.getToken();
}
getProvider (): string {
return this.service.getProvider();
}
}
|