db:更新用户表结构支持邮箱验证
- 在用户实体中添加 email_verified 字段 - 更新用户DTO支持邮箱验证状态 - 修改用户服务支持邮箱验证状态更新 - 添加按邮箱查找用户的方法 - 更新相关的单元测试
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手机号码
|
* 手机号码
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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(),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user