@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
TypeScript
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