UNPKG

@casual-simulation/aux-vm-browser

Version:

A set of utilities required to securely run an AUX in a web browser.

93 lines 4.12 kB
import type { Observable, SubscriptionLike } from 'rxjs'; import type { BrowserSimulation } from './BrowserSimulation'; import type { AuthHelperInterface, SimulationManager } from '@casual-simulation/aux-vm/managers'; import type { AuthHelper } from './AuthHelper'; import type { ActionKinds, AuthorizeActionMissingPermission, PartitionAuthPermissionResult, PublicUserInfo } from '@casual-simulation/aux-common'; import type { LoginStatus } from '@casual-simulation/aux-vm/auth'; import type { GrantMarkerPermissionResult, GrantResourcePermissionResult, ValidateSessionKeyFailure } from '@casual-simulation/aux-records'; import type { GrantEntitlementsAction } from '@casual-simulation/aux-runtime'; /** * Defines a class that is able to coordinate authentication across multiple simulations. */ export declare class AuthCoordinator<TSim extends BrowserSimulation> implements SubscriptionLike { private _simulationManager; private _onMissingPermission; private _onRequestAccess; private _onNotAuthorized; private _onShowAccountInfo; private _onGrantEntitlements; private _onAuthHelper; private _sub; get onMissingPermission(): Observable<MissingPermissionEvent>; get onNotAuthorized(): Observable<NotAuthorizedEvent>; get onShowAccountInfo(): Observable<ShowAccountInfoEvent>; get onRequestAccess(): Observable<RequestAccessEvent>; get onGrantEntitlements(): Observable<GrantEntitlementsEvent>; get authEndpoints(): Map<string, AuthHelperInterface>; get onAuthEndpointDiscovered(): Observable<{ endpoint: string; helper: AuthHelperInterface; }>; get authHelper(): AuthHelper; set authHelper(value: AuthHelper); constructor(manager: SimulationManager<TSim>); openAccountDashboard(simId: string): Promise<void>; logout(simId: string): Promise<void>; showReportInst(simId: string): Promise<void>; showAccountInfo(simId: string): Promise<void>; changeLogin(simId: string, origin: string): Promise<void>; requestAccessToMissingPermission(simId: string, origin: string, reason: AuthorizeActionMissingPermission): Promise<PartitionAuthPermissionResult>; grantAccessToMissingPermission(simId: string, origin: string, reason: AuthorizeActionMissingPermission, expireTimeMs?: number, actions?: ActionKinds[]): Promise<GrantMarkerPermissionResult | GrantResourcePermissionResult | ValidateSessionKeyFailure>; respondToPermissionRequest(simId: string, origin: string, result: PartitionAuthPermissionResult): Promise<void>; grantEntitlements(entitlementGrantEvent: GrantEntitlementsEvent): Promise<void>; denyEntitlements(entitlementGrantEvent: GrantEntitlementsEvent): Promise<void>; private _handleAuthRequest; private _handleNeedIndicator; private _handleInvalidIndicator; private _handleNotAuthorized; private _handleInvalidToken; private _handleNotLoggedIn; private _handleMissingPermission; private _handleNotAuthorizedError; unsubscribe(): void; get closed(): boolean; } export interface MissingPermissionEvent { simulationId: string; errorCode: string; errorMessage: string; reason: AuthorizeActionMissingPermission; origin: string; } export interface ShowAccountInfoEvent { /** * The ID of the simulation that the account info should be shown for. * If null, then the account info should be shown for the default auth endpoint. */ simulationId: string; loginStatus: LoginStatus; /** * The endpoint that the login status comes from. */ endpoint: string; } export interface NotAuthorizedEvent { simulationId: string; errorCode: string; errorMessage: string; origin: string; } export interface RequestAccessEvent { simulationId: string; origin: string; reason: AuthorizeActionMissingPermission; /** * The info about the user that is requesting the permission. */ user: PublicUserInfo | null; } export interface GrantEntitlementsEvent { simulationId: string; action: GrantEntitlementsAction; } //# sourceMappingURL=AuthCoordinator.d.ts.map