# 用户认证模块

## 用户体系
### 项目初始化数据
1. [公司通信录](0-设计方案\9-rmdc-user-auth\9-user-contact-list.md)应该作为项目数据库初始化的数据导入到数据库中


### 用户结构体
1. 用户ID
2. 用户中文名 必须要真实姓名
    1. 默认为[公司通信录]中的姓名
3. 用户英文名 也是昵称 可以为任意
    1. 默认为[公司通信录]中邮箱去除掉@之后的部分
4. 用户头像ID avatar_id
5. 用户头像框ID avatar_frame_id
6. 性别 gender
7. 电子邮箱
8. 手机号
9. 短号
10. 工号 work_id
11. 所属小组 group_name 产品与解决方案组
12. 状态 user_status active, locked, disabled 默认为 locked 删除为 disabled
13. 注册人ID registered_by_id 被谁注册的
14. 密码 需要保存的是加密后的密码 默认值是 supercyy.1加密后的hash值
15. 密码过期时间  password_expires_at 
16. 开发角色 dev_role 后端开发 backend, 前端开发 frontend, 测试工程师 test, 全干工程师 ops, 行业解决方案专家 seller, 未知 unknown 默认为 unknown
17. RMDC系统角色 rmdc_role 超级管理员,管理员,普通用户,三方用户 superadmin, admin, normal, third 默认为normal
18. 注册时间
19. 更新时间
20. 删除时间(设置为disabled的时间)

## 页面功能
### 用户管理
1. 只有超级管理员具有此页面的权限
1. 管理用户的信息
    1. 新增用户
    2. 修改用户信息
    3. 删除用户
    4. 启用注册用户
2. 开启注册权限
    1. 开放自己注册的功能
    2. 用户自行注册之后的状态默认是 locked

### 通信录页面
1. normal用户及以上具有通信录页面的权限
2. 展示部分用户的信息,方便联系其他的用户
3. 默认使用列表的形式展示,点击用户之后可以查看用户详细信息
4. 前端支持搜索,支持通过用户中文名,英文名 手机号 短号 快速搜索到用户

## 认证体系
1. 用户使用默认密码登录之后, 强制要求修改密码
2. 用户的密码有效期为3个月,过期需要强制修改密码
3. 前端和后端之间密码的传输不能是明文的,需要进行RSA加密传输
4. RMDC后端项目启动之后,需要创建一个RSA密钥对,并保存到数据库中
    1. RSA密钥对的有效期应该设置为30天,启动之后应该解析密钥对,并保存到内存中
    2. 如果密钥对过期,需要重新创建密钥对,并保存到数据库中
5. 前端登录需要调用后端获取RSA公钥,然后使用公钥加密密码,再将加密后的密码发送给后端
6. 后端接收到加密后的密码之后,使用自己的私钥解密密码,然后进行密码验证

## 授权体系
1. 各个模块的授权均应该放置在此模块中进行

## 用户注册、管理功能
2026年1月8日 结合工单系统，开发非超级管理员账号的注册功能

### 用户注册、管理权限
1. RMDC角色为管理员的用户
    1. 可以注册、管理（修改信息、启用、禁用、删除）普通用户权限的账户
    2. 可以注册、管理（修改信息、启用、禁用、删除）三方用户权限的账户
2. RMDC角色为普通用户的用户
    1. 只能注册三方用户权限的账户
    2. 不能注册普通用户权限的账户
    3. 只能管理（修改信息、启用、禁用、删除）自己注册的三方用户权限的账户
3. RMDC角色为三方用户的用户
    1. 不能注册任何权限的账户
    2. 不能管理（修改信息、启用、禁用、删除）任何用户权限的账户
4. RMDC角色为超级管理员的用户
    1. 可以注册任何权限的账户
    2. 可以管理（修改信息、启用、禁用、删除）任何用户权限的账户
5. 用户管理的原则为：谁注册谁管理
    1. 用户管理页面的功能
    2. 注册用户的注册人负责管理被注册用户的生命周期
    3. 超级管理员负责审核所有用户注册的工单

### 用户注册工单流程
1. 非超级管理员用户的在用户注册之后
    1. 用户状态默认为disabled
2. 启动用户注册工单流程
    1. 自动创建用户注册工单
    2. 自动提交给超级管理员
3. 超级管理员审核
    1. 审核通过
        1. 自动修改用户状态为 active, 用户启用
    2. 审核不通过
        1. 回退到用户注册阶段

### 用户管理工单流程
1. 非超级管理员用户的在用户管理之后
2. 启动用户管理工单流程
    1. 自动创建用户管理工单
    2. 自动提交给超级管理员
3. 超级管理员审核
    1. 审核通过
        1. 根据管理的内容，修改用户相应的信息
    2. 审核不通过
        1. 回退到用户管理阶段

### 用户注册页面
1. 请基于管理用户注册页面进行开发
2. 设计的更加好看

    