diff --git a/src/core/db/users/users.dto.ts b/src/core/db/users/users.dto.ts index ee2788d..5ca1f43 100644 --- a/src/core/db/users/users.dto.ts +++ b/src/core/db/users/users.dto.ts @@ -215,4 +215,21 @@ export class CreateUserDto { @Min(1, { message: '角色值最小为1' }) @Max(9, { message: '角色值最大为9' }) role?: number = 1; + + /** + * 邮箱验证状态 + * + * 业务规则: + * - 可选字段,默认为false(未验证) + * - 控制邮箱相关功能的可用性 + * - OAuth登录时可直接设为true + * - 影响密码重置等安全功能 + * + * 验证规则: + * - 可选字段验证 + * - 布尔类型验证 + * - 默认值:false(未验证) + */ + @IsOptional() + email_verified?: boolean = false; } \ No newline at end of file diff --git a/src/core/db/users/users.entity.ts b/src/core/db/users/users.entity.ts index 47e3c05..3835439 100644 --- a/src/core/db/users/users.entity.ts +++ b/src/core/db/users/users.entity.ts @@ -135,6 +135,33 @@ export class Users { }) email: string; + /** + * 邮箱验证状态 + * + * 数据库设计: + * - 类型:BOOLEAN,布尔值 + * - 约束:非空、默认值false + * - 索引:用于查询已验证用户 + * + * 业务规则: + * - false:邮箱未验证 + * - true:邮箱已验证 + * - 影响密码重置等安全功能 + * - OAuth登录时可直接设为true + * + * 安全考虑: + * - 未验证邮箱限制部分功能 + * - 验证后才能用于密码重置 + * - 支持重新发送验证邮件 + */ + @Column({ + type: 'boolean', + nullable: false, + default: false, + comment: '邮箱是否已验证' + }) + email_verified: boolean; + /** * 手机号码 * diff --git a/src/core/db/users/users.service.spec.ts b/src/core/db/users/users.service.spec.ts index dcb219e..1525d1b 100644 --- a/src/core/db/users/users.service.spec.ts +++ b/src/core/db/users/users.service.spec.ts @@ -50,6 +50,7 @@ describe('Users Entity, DTO and Service Tests', () => { github_id: 'github_123', avatar_url: 'https://example.com/avatar.jpg', role: 1, + email_verified: false, created_at: new Date(), updated_at: new Date(), }; diff --git a/src/core/db/users/users.service.ts b/src/core/db/users/users.service.ts index 20f1046..51d77c7 100644 --- a/src/core/db/users/users.service.ts +++ b/src/core/db/users/users.service.ts @@ -96,6 +96,7 @@ export class UsersService { user.github_id = createUserDto.github_id || null; user.avatar_url = createUserDto.avatar_url || null; user.role = createUserDto.role || 1; + user.email_verified = createUserDto.email_verified || false; // 保存到数据库 return await this.usersRepository.save(user);