¶ 常用 TS 类型定义及相关数据结构
¶ IGuardMode
Guard 展示形态:普通形态 / 模态框形态
export type IGuardMode = 'normal' | 'modal'
¶ IGuardModuleType
Guard 所有 module,可结合 changeView 自由切换 Guard 界面。
// **************************************
// 枚举转字符串字面量,以兼容所有构建工具及编译场景,相当于:
// export type IGuardModuleType = 'error' | 'login' | 'register' | 'mfa' | ......
// 下同
// **************************************
export type IGuardModuleType = `${GuardModuleType}`
export enum GuardModuleType {
ERROR = 'error', //错误页
LOGIN = 'login', //登录页
REGISTER = 'register', //注册页
MFA = 'mfa', // 二次 mfa 认证页
FORGET_PWD = 'forgetPassword', // 忘记密码页
FORCED_PASSWORD_RESET = 'forcedPasswordReset', // 登陆安全策略 密码轮换页
NOTICE_PASSWORD_RESET = 'noticePasswordReset', //提示修改密码页
FIRST_LOGIN_PASSWORD = 'firstLoginPassword', //首次登录修改密码页
UNSAFE_PASSWORD_RESET = 'unsafePasswordReset', // 密码强度不符合要求修改密码页
DOWNLOAD_AT = 'downloadAT', //下载 Authenticator 页
BIND_TOTP = 'bindTotp', // 绑定 TOTP页
ANY_QUESTIONS = 'anyQuestions', // 问题反馈页
LOGIN_COMPLETE_INFO = 'loginCompleteInfo', // 登录信息补全
REGISTER_PASSWORD = 'registerPassword', // 验证码注册拉起密码补全页
REGISTER_COMPLETE_INFO = 'registerCompleteInfo', //注册信息补全页
RECOVERY_CODE = 'recoveryCode', // MFA 恢复码展示页
SUBMIT_SUCCESS = 'submitSuccess', // 提交成功展示页
IDENTITY_BINDING_ASK = 'identityBindingAsk', // 身份源绑定 问询页
IDENTITY_BINDING = 'identityBinding', // 身份源绑定页
IDENTITY_BINDING_NO_ASK = 'identityBindingNoAsk', // 身份源绑定页不问询
SELF_UNLOCK = 'selfUnlock', // 自助解锁页
FLOW_SELECT_ACCOUNT = 'flowSelectAccount', // 选择登录账号
/** 多租户门户选择页 */
TENANT_PORTAL = 'tenant-portal',
New_SUBMIT_SUCCESS = 'newSubmitSuccess', // 提交成功展示页
RESET_ACCOUNT_NAME = 'resetAccountName' // 重置账号
}
¶ IGuardTabType
Guard 所有 tab,可结合 changeView 自由切换 Guard 界面。通常只有登录和注册界面下才有 tab。
export type IGuardTabType =
| 'phone-code'
| 'phone-password'
| 'password'
| 'email-password'
| 'username-password'
| 'authing-otp-push'
| 'ad'
| 'ldap'
| 'app-qrcode'
¶ Lang
export type Lang = 'zh-CN' | 'en-US' | 'zh-TW' | 'ja-JP'
¶ IGuardConfig
export interface IGuardConfig {
// 自定义 Guard 标题
title?: string,
// 自定义 Guard 展示 LOGO
logo?: string
// mode = 'modal' 时,是否可关闭模态框
clickCloseable?: boolean
// 多语言范围
langRange: Lang[]
// 社会化身份源
socialConnectionList?: ISocialConnectionProvider[]
// 默认登录方式
loginMethod?: ILoginMethod
// 所有可用的登录方式
loginMethodList: ILoginMethod[]
// 默认注册方式
registerMethod?: IRegisterMethod
// 所有可用注册方式
registerMethodList?: IRegisterMethod[]
// 自定义 CSS 样式,如果指定了,会在 DOM 的 head 中插入一个 <style type="text/css"></style> 节点。如 body {background:#6699
contentCSS?: string
}
¶ ISocialConnectionProvider
社会化身份源
export type ISocialConnectionProvider = `${SocialConnectionProvider}`
export enum SocialConnectionProvider {
ALIPAY = 'alipay',
GOOGLE = 'google',
WECHATPC = 'wechat:pc',
WECHATMP = 'wechat:webpage-authorization',
WECHAT_MINIPROGRAM = 'wechat:miniprogram:default',
WECHAT_MINIPROGRAM_QRCODE = 'wechat:miniprogram:qrconnect',
WECHAT_MINIPROGRAM_APPLAUNCH = 'wechat:miniprogram:app-launch',
WECHATMOBILE = 'wechat:mobile',
GITHUB = 'github',
QQ = 'qq',
WECHATWORK_ADDRESS_BOOK = 'wechatwork:addressbook',
WECHATWORK_CORP_QRCONNECT = 'wechatwork:corp:qrconnect',
WECHATWORK_SERVICEPROVIDER_QRCONNECT = 'wechatwork:service-provider:qrconnect',
DINGTALK = 'dingtalk',
WEIBO = 'weibo',
APPLE = 'apple',
APPLE_WEB = 'apple:web',
LARK_PUBLIC = 'lark-public',
LARK_INTERNAL = 'lark-internal',
BAIDU = 'baidu',
LINKEDIN = 'linkedin',
SLACK = 'slack',
YIDUN = 'yidun',
QINGCLOUD = 'qingcloud',
FACEBOOK = 'facebook'
}
¶ ILoginMethod
Guard 提供的可用的登录方式
export type ILoginMethod = `${LoginMethods}`
export enum LoginMethods {
LDAP = 'ldap',
AppQr = 'app-qrcode',
Password = 'password',
PhoneCode = 'phone-code',
WxMinQr = 'wechat-miniprogram-qrcode', // 对应社会化登录的 wechat:miniprogram:qrconnect(小程序扫码登录)
AD = 'ad', // 对应企业身份源的 Windows AD 登录
WechatMpQrcode = 'wechatmp-qrcode', // 微信扫码关注登录
AuthingOtpPush = 'authing-otp-push' // App 扫码登录
}
¶ IRegisterMethod
Guard 提供的可用的注册方式
export type IRegisterMethod = `${RegisterMethods}`
export enum RegisterMethods {
Email = 'email',
Phone = 'phone',
EmailCode = 'emailCode'
}
¶ NomalLoginParams
interface NomalLoginParams {
type: "ldap" /**LDAP 登录 */
| "ad" /**AD 登录 */
| "password"/**密码登录,如手机号 + 密码,邮箱 + 密码 */;
data: {
identity: string; // 账号
password: string; // 密码
captchaCode?: string; // 图形验证码
};
}
¶ VerifyCodeLoginParams
interface VerifyCodeLoginParams {
type: "email-code" /**邮箱验证码登录 */
| "phone-code" /**手机验证码登录 */;
data: {
identity: string; // 账号
code: string; // 验证码
phoneCountryCode?: string; // 开启国际化短信后携带的区号信息
};
}
¶ ScanLoginParams
interface ScanLoginParams {
type: "app-qrcode" /**APP 扫码登录登录 */
| "wechat-miniprogram-qrcode" /**微信小程序扫码登录 */
| "wechatmp-qrcode" /**微信公众号扫码登录登录 */;
data: User; // 用户信息
}
¶ RegisterParams
interface RegisterParams {
type: "phone" /**手机验证码注册 */
| "email" /**邮箱密码注册 */
| "emailCode" /**邮箱验证码注册 */;
data: {
identity: string; // 账号
password?: string; // 密码
code?: string; // 验证码
};
}
¶ User
详情请见:用户字段释义 (opens new window)。
¶ OnAfterChangeModuleOptions
interface OnAfterChangeModuleOptions {
currentView: string
currentModule: IGuardModuleType
currentTab?: IGuardTabType
data?: any
}
¶ ILoginError
interface ILoginError {
code: number
data: any
message: string
}
¶ IEmailScene
Guard 内部邮箱验证码发送的场景值,根据场景值发送控制台配置完成的邮件模版
export type IEmailScene = `${EmailScene}`
export enum EmailScene {
// 通知模版
// - 欢迎邮件 WELCOME
WELCOME_EMAIL = 'WELCOME_EMAIL',
// - 首次创建用户通知 FIRST_LOGIN_VERIFY
FIRST_CREATED_USER = 'FIRST_CREATED_USER',
// 注册/登录验证码模板 VERIFY_CODE
// - 注册验证码
REGISTER_VERIFY_CODE = 'REGISTER_VERIFY_CODE',
// - 登录验证码
LOGIN_VERIFY_CODE = 'LOGIN_VERIFY_CODE',
// - MFA 验证
MFA_VERIFY_CODE = 'MFA_VERIFY_CODE',
// - 信息补全验证码
INFORMATION_COMPLETION_VERIFY_CODE = 'INFORMATION_COMPLETION_VERIFY_CODE',
// 验证模版 VERIFY_EMAIL
// - 首次邮箱登录验证
FIRST_EMAIL_LOGIN_VERIFY = 'FIRST_EMAIL_LOGIN_VERIFY',
// - 在控制台发起验证
CONSOLE_CONDUCTED_VERIFY = 'CONSOLE_CONDUCTED_VERIFY',
// 重置密码模版 RESET_PASSWORD
// - 重置密码验证码
RESET_PASSWORD_VERIFY_CODE = 'RESET_PASSWORD_VERIFY_CODE',
// 邮箱绑定模版 CHANGE_EMAIL
// - 邮箱绑定验证码
EMAIL_BIND_VERIFY_CODE = 'EMAIL_BIND_VERIFY_CODE',
// - 邮箱解绑验证码
EMAIL_UNBIND_VERIFY_CODE = 'EMAIL_UNBIND_VERIFY_CODE',
// 自助解锁验证码
SELF_UNLOCKING_VERIFY_CODE = 'SELF_UNLOCKING_VERIFY_CODE'
}
¶ ISceneType
Guard 内部短信验证码发送的场景值
export type ISceneType = `${SceneType}`
export declare enum SceneType {
SCENE_TYPE_LOGIN = "login",
SCENE_TYPE_REGISTER = "register",
SCENE_TYPE_RESET = "reset",
SCENE_TYPE_BIND = "bind",
SCENE_TYPE_UNBIND = "unbind",
SCENE_TYPE_MFA_BIND = "mfa-bind",
SCENE_TYPE_MFA_VERIFY = "mfa-verify",
SCENE_TYPE_MFA_UNBIND = "mfa-unbind",
SCENE_TYPE_COMPLETE_PHONE = "complete-phone"
}
¶ NomalLoginParams
interface NomalLoginParams {
type: "ldap" /**LDAP 登录 */
| "ad" /**AD 登录 */
| "password"/**密码登录,如手机号 + 密码,邮箱 + 密码 */;
data: {
identity: string; // 账号
password: string; // 密码
captchaCode?: string; // 图形验证码
};
}
¶ VerifyCodeLoginParams
interface VerifyCodeLoginParams {
type: "email-code" /**邮箱验证码登录 */
| "phone-code" /**手机验证码登录 */;
data: {
identity: string; // 账号
code: string; // 验证码
phoneCountryCode?: string; // 开启国际化短信后携带的区号信息
};
}
¶ IChangeViewOptions
export interface IChangeViewOptions {
module: IGuardModuleType
tab?: IGuardTabType
}
¶ LogoutParams
export interface LogoutParams {
// 退出后的重定向地址,默认使用控制台 -> 应用 -> 自建应用 -> 应用配置 -> 认证配置 -> 登出回调 URL 中的第一个
redirectUri?: string
// 只退出当前设备,不影响其他设备登录状态
quitCurrentDevice?: boolean
}
¶ Guard
class Guard {
async getAuthClient(): Promise<AuthenticationClient>
/**
* 启动嵌入模式
* @param el String
* @returns Promise
*/
async start(el?: string): Promise<User>
changeLang(lang: Lang): void
changeContentCSS(contentCSS: string): void
/**
* 启动跳转模式
*/
async startWithRedirect(options: StartWithRedirectOptions = {}): void
async handleRedirectCallback(): void
/**
* 获取当前用户信息
*/
async trackSession(): Promise<User | null>
async logout(params: LogoutParams = {}): void
show(): void
hide(): void
unmount(): void
async changeView(currentView: string | IChangeViewOptions): void
checkAllAgreements(): void
unCheckAllAgreements(): void
}