返回 AiToEarn
auth.dto.ts
1 import { createZodDto } from '@yikart/common'
2 import { z } from 'zod'
3
4 const SelectedAccountIdentitySchema = z.object({
5 platformUid: z.string().min(1).describe('平台账号 UID'),
6 account: z.string().min(1).optional().describe('平台账号补充唯一标识'),
7 })
8
9 export const StartAuthQuerySchema = z.object({
10 callbackUrl: z.url({ protocol: /^https?$/ }).optional().describe('授权完成后浏览器 POST relay 的回调地址'),
11 redirectUri: z.httpUrl().optional().describe('授权完成后浏览器跳转地址'),
12 groupId: z.string().optional().describe('账号组 ID,不传则使用默认组'),
13 })
14
15 export class StartAuthQueryDto extends createZodDto(StartAuthQuerySchema) {}
16
17 export const AuthCallbackQuerySchema = z.object({
18 code: z.string().optional().describe('OAuth 授权码'),
19 state: z.string().optional().describe('OAuth state'),
20 error: z.string().optional().describe('OAuth 错误码'),
21 error_description: z.string().optional().describe('OAuth 错误说明'),
22 token: z.string().optional().describe('抖音小程序登录 code'),
23 nickname: z.string().optional().describe('抖音小程序昵称'),
24 avatar: z.string().optional().describe('抖音小程序头像 URL'),
25 }).describe('平台 OAuth callback 查询参数')
26
27 export class AuthCallbackQueryDto extends createZodDto(AuthCallbackQuerySchema) {}
28
29 export const AuthCallbackBodySchema = AuthCallbackQuerySchema.extend({
30 tickets: z.record(z.string(), z.string()).optional().describe('抖音小程序授权 ticket'),
31 }).describe('平台 OAuth callback 请求体')
32
33 export class AuthCallbackBodyDto extends createZodDto(AuthCallbackBodySchema) {}
34
35 export const SubmitAuthSelectionsSchema = z.object({
36 accounts: z.array(SelectedAccountIdentitySchema).describe('选中的平台账号身份'),
37 })
38
39 export class SubmitAuthSelectionsDto extends createZodDto(SubmitAuthSelectionsSchema) {}
40
40 lines TYPESCRIPT