UNPKG

vue-app-sdk

Version:
107 lines (106 loc) 2.58 kB
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; }