mongodb-stitch
Version:
[](https://gitter.im/mongodb/stitch?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
54 lines (53 loc) • 2.64 kB
TypeScript
import { Decoder } from "../../internal/common/Codec";
import { Storage } from "../../internal/common/Storage";
import Response from "../../internal/net/Response";
import Stream from "../../internal/net/Stream";
import EventStream from "../../internal/net/EventStream";
import { StitchAuthRequest } from "../../internal/net/StitchAuthRequest";
import StitchRequestClient from "../../internal/net/StitchRequestClient";
import StitchCredential from "../StitchCredential";
import AuthInfo from "./AuthInfo";
import CoreStitchUser from "./CoreStitchUser";
import StitchAuthRequestClient from "./StitchAuthRequestClient";
import { StitchAuthRoutes } from "./StitchAuthRoutes";
import StitchUserFactory from "./StitchUserFactory";
export default abstract class CoreStitchAuth<TStitchUser extends CoreStitchUser> implements StitchAuthRequestClient {
authInfo: AuthInfo;
protected readonly requestClient: StitchRequestClient;
protected readonly authRoutes: StitchAuthRoutes;
protected abstract userFactory: StitchUserFactory<TStitchUser>;
protected abstract deviceInfo: {
[key: string]: string;
};
private readonly storage;
private currentUser?;
private readonly accessTokenRefresher;
protected constructor(requestClient: StitchRequestClient, authRoutes: StitchAuthRoutes, storage: Storage, useTokenRefresher?: boolean);
readonly isLoggedIn: boolean;
readonly user: TStitchUser | undefined;
doAuthenticatedRequest(stitchReq: StitchAuthRequest): Promise<Response>;
doAuthenticatedRequestWithDecoder<T>(stitchReq: StitchAuthRequest, decoder?: Decoder<T>): Promise<T>;
openAuthenticatedEventStream(stitchReq: StitchAuthRequest, open?: boolean): Promise<EventStream>;
openAuthenticatedStreamWithDecoder<T>(stitchReq: StitchAuthRequest, decoder?: Decoder<T>): Promise<Stream<T>>;
refreshAccessToken(): Promise<void>;
loginWithCredentialInternal(credential: StitchCredential): Promise<TStitchUser>;
linkUserWithCredentialInternal(user: CoreStitchUser, credential: StitchCredential): Promise<TStitchUser>;
logoutInternal(): Promise<void>;
readonly hasDeviceId: boolean;
protected readonly deviceId: string | undefined;
protected abstract onAuthEvent(): any;
private prepareAuthRequest;
private handleAuthFailureForEventStream;
private handleAuthFailure;
private tryRefreshAccessToken;
private prepUser;
private attachAuthOptions;
private doLogin;
private doLoginRequest;
private processLogin;
private processLoginResponse;
private doGetUserProfile;
private doLogout;
private clearAuth;
close(): void;
}