bixi
Version:
企业级中后台前端解决方案
59 lines (46 loc) • 1.53 kB
text/typescript
import { InjectionToken } from '@angular/core';
import { Observable } from 'rxjs';
import { BixiAuthConfig } from '../config.type';
import { BIXI_SERVICE_TOKEN_FACTORY } from './token.service';
export const BIXI_SERVICE_TOKEN = new InjectionToken<ITokenService>('BIXI_SERVICE_TOKEN', {
providedIn: 'root',
factory: BIXI_SERVICE_TOKEN_FACTORY
});
// tslint:disable-next-line: interface-name
export interface ITokenModel {
// tslint:disable-next-line:no-any
[key: string]: any;
token: string | null | undefined;
}
// tslint:disable-next-line:interface-name
export interface AuthReferrer {
url?: string | null | undefined;
}
// tslint:disable-next-line: interface-name
export interface ITokenService {
/** 获取登录地址 */
readonly login_url: string | undefined;
/** 获取授权失败前路由信息 */
readonly referrer?: AuthReferrer;
readonly options: BixiAuthConfig;
set(data: ITokenModel | null): boolean;
/**
* 获取Token,形式包括:
* - `get()` 获取 Simple Token
* - `get<JWTTokenModel>(JWTTokenModel)` 获取 JWT Token
*/
// tslint:disable-next-line:no-any
get(type?: any): ITokenModel | null;
/**
* 获取Token,形式包括:
* - `get()` 获取 Simple Token
* - `get<JWTTokenModel>(JWTTokenModel)` 获取 JWT Token
*/
// tslint:disable-next-line:no-any
get<T extends ITokenModel>(type?: any): T;
/**
* Clean authorization data
*/
clear(options?: { onlyToken: boolean }): void;
change(): Observable<ITokenModel | null>;
}