vulcain-corejs
Version:
Vulcain micro-service framework
85 lines (84 loc) • 2.2 kB
TypeScript
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);
}