28 lines
902 B
TypeScript
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>;
|