UNPKG

vulcain-corejs

Version:
85 lines (84 loc) 2.2 kB
import { IAuthorizationPolicy } from './authorizationPolicy'; import { RequestContext } from "../pipeline/requestContext"; import { IContainer } from '../di/resolvers'; import { IRequestContext } from '../pipeline/common'; export interface IAuthenticationStrategy { name: string; verifyToken(ctx: IRequestContext, token: string, tenant: string): Promise<UserContextData>; createToken?(user: UserContextData): Promise<{ expiresIn: number; token: string; renewToken: string; }>; } export interface UserContextData { /** * User name * */ name: string; /** * */ tenant?: string; scopes: string[]; claims?: any; } export interface UserContext extends UserContextData { getClaims<T = any>(): T; isAdmin: boolean; hasScope(handlerScope: string): boolean; isAnonymous: boolean; } export interface UserToken extends UserContext { bearer: string; } /** * User context * * @export * @interface SecurityContext */ export declare class SecurityContext implements UserContext { private scopePolicy; private static EmptyScopes; private static UserFields; private strategies; constructor(container: IContainer, scopePolicy: IAuthorizationPolicy); addOrReplaceStrategy(strategy: IAuthenticationStrategy): void; /** * User name * * @type {string} * @memberOf UserContext */ name: string; /** * Claims */ claims: any; /** * Get user scopes * * @readonly * @type {Array<string>} */ readonly scopes: Array<string>; readonly isAnonymous: boolean; private _scopes; private _isAnonymous; tenant: string; bearer: string; getClaims<T = any>(): T; setTenant(tenantOrCtx: string | UserContextData): void; process(ctx: RequestContext): Promise<void>; hasScope(handlerScope: string): boolean; getUserContext(): UserContextData; /** * Check if the current user is an admin * * @returns {boolean} */ readonly isAdmin: boolean; private findInCookie(ctx); }