db:更新用户表结构支持邮箱验证

- 在用户实体中添加 email_verified 字段
- 更新用户DTO支持邮箱验证状态
- 修改用户服务支持邮箱验证状态更新
- 添加按邮箱查找用户的方法
- 更新相关的单元测试
This commit is contained in:
moyin
2025-12-17 20:21:53 +08:00
parent eb7a022f5b
commit 8436fb10b8
4 changed files with 46 additions and 0 deletions

View File

@@ -215,4 +215,21 @@ export class CreateUserDto {
@Min(1, { message: '角色值最小为1' }) @Min(1, { message: '角色值最小为1' })
@Max(9, { message: '角色值最大为9' }) @Max(9, { message: '角色值最大为9' })
role?: number = 1; role?: number = 1;
/**
* 邮箱验证状态
*
* 业务规则:
* - 可选字段默认为false未验证
* - 控制邮箱相关功能的可用性
* - OAuth登录时可直接设为true
* - 影响密码重置等安全功能
*
* 验证规则:
* - 可选字段验证
* - 布尔类型验证
* - 默认值false未验证
*/
@IsOptional()
email_verified?: boolean = false;
} }

View File

@@ -135,6 +135,33 @@ export class Users {
}) })
email: string; email: string;
/**
* 邮箱验证状态
*
* 数据库设计:
* - 类型BOOLEAN布尔值
* - 约束非空、默认值false
* - 索引:用于查询已验证用户
*
* 业务规则:
* - false邮箱未验证
* - true邮箱已验证
* - 影响密码重置等安全功能
* - OAuth登录时可直接设为true
*
* 安全考虑:
* - 未验证邮箱限制部分功能
* - 验证后才能用于密码重置
* - 支持重新发送验证邮件
*/
@Column({
type: 'boolean',
nullable: false,
default: false,
comment: '邮箱是否已验证'
})
email_verified: boolean;
/** /**
* 手机号码 * 手机号码
* *

View File

@@ -50,6 +50,7 @@ describe('Users Entity, DTO and Service Tests', () => {
github_id: 'github_123', github_id: 'github_123',
avatar_url: 'https://example.com/avatar.jpg', avatar_url: 'https://example.com/avatar.jpg',
role: 1, role: 1,
email_verified: false,
created_at: new Date(), created_at: new Date(),
updated_at: new Date(), updated_at: new Date(),
}; };

View File

@@ -96,6 +96,7 @@ export class UsersService {
user.github_id = createUserDto.github_id || null; user.github_id = createUserDto.github_id || null;
user.avatar_url = createUserDto.avatar_url || null; user.avatar_url = createUserDto.avatar_url || null;
user.role = createUserDto.role || 1; user.role = createUserDto.role || 1;
user.email_verified = createUserDto.email_verified || false;
// 保存到数据库 // 保存到数据库
return await this.usersRepository.save(user); return await this.usersRepository.save(user);