vue-app-sdk
Version:
107 lines (106 loc) • 2.58 kB
TypeScript
import { Plugin, PluginID } from '../..';
import { LocationQuery, RouteLocationNormalized } from 'vue-router';
export interface VerifyParamRecord {
/**
* 参数名称
*/
name: string;
/**
* 是否必填
* @default true
*/
required?: boolean;
}
/**
* 验证参数类型
*/
export type VerifyParamType = string | VerifyParamRecord;
export interface SSOOptions {
/**
* 需要验证的参数列表,若存在多种情况可进行分组设置
* @example
* ```ts
* // 不分组
* createSSO({ verifyParams: ['token', { name: 'state', required: false }] })
*
* // 分组
* createSSO({
* verifyParams: {
* success: ['token', { name: 'state', required: false }],
* error: ['error'],
* }
* })
* ```
*/
verifyParams: VerifyParamType[] | Record<string, VerifyParamType[]>;
/**
* 获取单点登录地址
* @example
* ```ts
* const sso = createSSO({
* // 获取 SSO 地址
* resolveSSOUri: (redirectUri) => `http://127.0.0.1:3000/login?redirect=${redirectUri}`
* })
* ```
*/
resolveSSOUri: (redirectUri: string) => string;
}
/**
* SSO Plugin ID
*/
export declare const SSO_ID: PluginID<SSO>;
/**
* 单点登录插件
*/
export declare class SSO implements Plugin {
/**
* 配置项
*/
options: SSOOptions;
constructor(
/**
* 配置项
*/
options: SSOOptions);
id: PluginID<SSO>;
/**
* 需要验证的参数列表
*/
private _verifyParams;
/**
* 统一化参数列表
* @param params 参数列表
*/
private _normalizeParams;
/**
* 获取不带参数的哈希路径
*/
private _getHashWithoutParams;
/**
* 验证分组参数列表
* @param route 路由
* @param params 需要验证的参数列表
*/
private _verifyGroupParams;
/**
* 验证路由是否来源于单点登录
* @param route 路由
*/
isFromSSO: (route: RouteLocationNormalized) => boolean;
/**
* 获取验证参数
* @param route 路由
*/
getVerifyParams: <T = LocationQuery>(route: RouteLocationNormalized) => [groupKey: string, params: T];
/**
* 剔除 `route.query` 里的验证参数
* @param query 路由查询参数
* @param params 验证参数
*/
omitVerifyParams: (query: LocationQuery, params: any) => LocationQuery;
/**
* 跳转至单点登录页
*/
gotoSSO: () => void;
install: () => void;
}