feat: 接入真实登录与成员权限
- auth/members/messages: 新增超级管理员登录、成员权限和密码消息流程 - agent-config/agent: 支持服务端保存 Agent 配置并取消未配置 mock 成功结果 - projects/deploy-runs/settings: 按当前用户权限保护真实接口 - prisma: 新增用户、项目权限和平台消息表结构
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
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';
|
||||
}
|
||||
Reference in New Issue
Block a user