import type { BladeClient } from "../blade-client"; import type { LoginOptions, LoginResult } from "../auth-login"; export interface UserInfo { id: string; username: string; display_name?: string | null; avatar_url: string | null; token: string; auth_type: "casdoor"; is_admin?: boolean; } export interface ProvidersResponse { providers: Array<{ name: string; authorize_url: string; }>; password_enabled: boolean; } export interface ExchangeCodeParams { /** 授权回调页 postMessage 回来的一次性 code。 */ code: string; /** 发起授权时用的 state,必须原样传回。 */ state: string; /** 发起授权的页面 origin,要和 authorize 时传的 `client_origin` 完全一致。 */ clientOrigin: string; } export interface ExchangeCodeResult { access_token: string; token_type: string; user: { id: string; username: string; display_name: string; avatar_url: string | null; }; } export declare class AuthResource { private client; constructor(client: BladeClient); /** * 弹窗授权登录(浏览器专用):弹出后端授权页,用户点击"许可授权"后 * 自动取得 PAT 并热挂载到当前 client。等价于 client.login()。 */ login(options?: LoginOptions): Promise; /** * 用一次性 code 换 PAT。给**服务端**用:浏览器把 code 交给你自己的后端, * 后端换到的 PAT 不进浏览器。浏览器里直接用 `login()` 就够了。 * * 服务端调用时会自己补上 `Origin` 头(浏览器会自动带,服务端不会,缺了 * 后端报 `missing_request_origin`)。 */ exchangeCode(params: ExchangeCodeParams): Promise; /** 清除 login() 存储的令牌。 */ logoutToken(): void; getProviders(): Promise; getMe(): Promise; logout(): Promise<{ logout_url: string; }>; }