@tapsellorg/angular-material-library
Version:
Angular library for Tapsell
90 lines (89 loc) • 2.65 kB
TypeScript
import { Observable } from 'rxjs';
import { PghSsoImpersonateData } from '../login-as-user/login-as-user.model';
export interface PghSsoIframeMessage<T extends string = string, V = any> {
type: `sso:${T}`;
value: V;
}
export type PghSsoIframeAuthData = PghSsoIframeMessage<'auth', PghSsoAuthData>;
export type PghSsoIframeLogout = PghSsoIframeMessage<'logout', {}>;
export interface PghSsoAuthData {
accessToken: string;
refreshToken: string;
}
export interface PghSsoAuthDataRefreshTokenRequestModel {
access_token: string;
refresh_token: string;
}
export interface PghSsoAuthEnrichedData extends PghSsoAuthData {
userId?: number;
email: string;
impersonatedByAdmin?: boolean;
}
/**
* isInsideSsoPanel: if current panel is the sso panel
* profileRoute: route to profile page in sso panel. Must start with `/`
*/
export interface PghSsoConfig {
sharedIframeUrl: string;
ssoPanelUrl: string;
ssoApiBaseUrl: string;
restrictedUrls: string[];
impersonateApiUrl: string;
isInsideSsoPanel: boolean;
changePasswordRoute: string;
isDevMode: boolean;
profileRoute: string;
trustedDomains: string[];
redirectToSsoAfterLogout: boolean;
pghCookieStoreDomain: string;
pghRedirectUrlParam: string;
refreshTokenRequest: (refreshToken: string) => Observable<PghSsoAuthDataRefreshTokenRequestModel>;
getUUidRequest: (authData: PghSsoImpersonateData) => Observable<string>;
getTokenRequest: (uuid: string) => Observable<PghSsoImpersonateData>;
expireTokenAfterLogout: (authData: PghSsoImpersonateData) => Observable<string>;
accessTokenExpiredError: (err: string) => boolean;
refreshTokenExpiredError: (err: string) => boolean;
}
export interface PghTokenAccountData {
accountId: number;
ownerTapsellId: string;
ownerId: number;
userId?: number;
ownerMediaadId: number;
}
export interface PghTokenAdminData {
adminId: number;
ownerTapsellId: string;
ownerMediaadId: number;
impersonated: boolean;
}
/**
* sub: user's email
*/
export interface PghTokenPayload {
sub: string;
aud: string;
nbf: number;
scope: string[];
iss: string;
exp: number;
iat: number;
authorities: string[];
userAccountData?: PghTokenAccountData;
adminAccountData?: PghTokenAdminData;
}
export interface PghLoginQueryParams {
redirect?: string;
}
export interface PghErrorResponse {
errors?: Record<string, ErrorDetails[]>;
error: ErrorDetails;
code?: string;
}
interface ErrorDetails {
message_en?: string;
message_fa?: string;
code: string;
info?: string[];
}
export {};