bc3aa31289
- auth/members/messages: 新增超级管理员登录、成员权限和密码消息流程 - agent-config/agent: 支持服务端保存 Agent 配置并取消未配置 mock 成功结果 - projects/deploy-runs/settings: 按当前用户权限保护真实接口 - prisma: 新增用户、项目权限和平台消息表结构
71 lines
2.0 KiB
TypeScript
71 lines
2.0 KiB
TypeScript
import { ApiProperty } from '@nestjs/swagger';
|
|
import { z } from 'zod';
|
|
|
|
const permissionLevelSchema = z.enum(['none', 'read', 'build']);
|
|
|
|
export const projectPermissionSchema = z.object({
|
|
projectKey: z.string().trim().min(1).max(80),
|
|
level: permissionLevelSchema,
|
|
});
|
|
|
|
export const createMemberSchema = z.object({
|
|
account: z.string().trim().min(1).max(80),
|
|
displayName: z.string().trim().min(1).max(120),
|
|
permissions: z.array(projectPermissionSchema).optional().default([]),
|
|
});
|
|
|
|
export type CreateMemberDtoInput = z.infer<typeof createMemberSchema>;
|
|
|
|
export class ProjectPermissionDto {
|
|
@ApiProperty({ example: 'devops-platform-api', description: '项目标识' })
|
|
projectKey!: string;
|
|
|
|
@ApiProperty({
|
|
enum: ['none', 'read', 'build'],
|
|
description: '项目权限:none 无权限,read 只读,build 构建',
|
|
})
|
|
level!: 'none' | 'read' | 'build';
|
|
}
|
|
|
|
export class CreateMemberDto {
|
|
@ApiProperty({ example: 'member01', description: '成员账号' })
|
|
account!: string;
|
|
|
|
@ApiProperty({ example: '成员一', description: '成员名称' })
|
|
displayName!: string;
|
|
|
|
@ApiProperty({
|
|
type: [ProjectPermissionDto],
|
|
required: false,
|
|
description: '成员项目权限,未传项目默认为无权限',
|
|
})
|
|
permissions?: ProjectPermissionDto[];
|
|
}
|
|
|
|
export const updateMemberPermissionsSchema = z.object({
|
|
permissions: z.array(projectPermissionSchema).default([]),
|
|
});
|
|
|
|
export type UpdateMemberPermissionsInput = z.infer<
|
|
typeof updateMemberPermissionsSchema
|
|
>;
|
|
|
|
export class UpdateMemberPermissionsDto {
|
|
@ApiProperty({ type: [ProjectPermissionDto], description: '完整项目权限列表' })
|
|
permissions!: ProjectPermissionDto[];
|
|
}
|
|
|
|
export const updateMemberStatusSchema = z.object({
|
|
status: z.enum(['active', 'disabled']),
|
|
});
|
|
|
|
export type UpdateMemberStatusInput = z.infer<typeof updateMemberStatusSchema>;
|
|
|
|
export class UpdateMemberStatusDto {
|
|
@ApiProperty({
|
|
enum: ['active', 'disabled'],
|
|
description: '成员状态:active 启用,disabled 禁用',
|
|
})
|
|
status!: 'active' | 'disabled';
|
|
}
|