fenghuo/packages/openapi/src/oidc/userinfo.schema.ts

28 lines
902 B
TypeScript

import { z } from 'zod';
// 用户信息响应模式
export const userInfoResponseSchema = z.object({
sub: z.string(),
// 标准OIDC声明
iss: z.string().optional(),
aud: z.string().optional(),
iat: z.number().optional(),
auth_time: z.number().optional(),
// profile scope
name: z.string().optional(),
nickname: z.string().optional(),
profile: z.string().optional(),
picture: z.string().optional(),
gender: z.string().optional(),
birthdate: z.string().optional(),
updated_at: z.number().optional(),
// email scope
email: z.string().optional(),
email_verified: z.boolean().optional(),
// phone scope
phone_number: z.string().optional(),
phone_number_verified: z.boolean().optional(),
}).passthrough(); // 允许添加自定义声明
// 类型定义
export type UserInfoResponse = z.infer<typeof userInfoResponseSchema>;