# 用户注册审批功能测试指南 ## 功能概述 本系统实现了完整的用户注册审批流程,包括: 1. 用户自主注册功能 2. 管理员审批功能 3. 登录状态检查 4. 多管理员支持(一人审批即可) ## 数据库迁移 由于项目依赖问题,请手动执行以下SQL语句添加status字段: ```sql ALTER TABLE lunaruser_myuser ADD COLUMN status VARCHAR(20) DEFAULT 'approved' COMMENT '用户状态'; ``` 或者运行以下Python脚本: ```bash cd backend python add_status_field.py ``` ## 测试步骤 ### 1. 用户注册测试 1. 访问登录页面 2. 点击"立即注册"链接 3. 填写注册表单: - 用户名(必填) - 姓名(必填) - 手机号(必填) - 密码(必填,至少6位) - 确认密码(必填) - 所属分组(可选) 4. 点击"注册账号" 5. 预期结果:显示"你的注册申请已提交,待管理员审核中!" ### 2. 管理员审批测试 1. 使用超级管理员账号登录 2. 进入用户管理页面 3. 点击"注册用户审批"按钮 4. 查看待审批用户列表 5. 对某个用户点击"通过"或"不通过" 6. 预期结果: - 通过后,用户状态变为"已通过",is_active变为true - 不通过后,用户状态变为"未通过" ### 3. 登录状态检查测试 #### 待审核状态登录 1. 使用待审核的用户名和密码登录 2. 预期结果:显示"你提交的注册还在审批中,暂时无法登录,可联系管理员确认!" #### 未通过状态登录 1. 使用未通过的用户名和密码登录 2. 预期结果:显示"你的注册申请未通过审核,无法登录!" #### 已通过状态登录 1. 使用已通过的用户名和密码登录 2. 预期结果:正常登录 ## API接口说明 ### 注册接口 - URL: `POST /api/user/register` - 参数: ```json { "username": "testuser", "name": "测试用户", "phone": "13800138000", "password": "123456", "confirm_password": "123456", "groups": [] } ``` - 响应: ```json { "success": true, "msg": "你的注册申请已提交,待管理员审核中!", "data": { "id": 1, "username": "testuser" } } ``` ### 审批列表接口 - URL: `GET /api/user/approval/` - 响应: ```json { "success": true, "results": [...] } ``` ### 审批操作接口 - URL: `POST /api/user/approval/{user_id}/approve/` - 参数: ```json { "action": "approve" } ``` - 响应: ```json { "success": true, "msg": "用户审批已通过" } ``` ## 文件修改清单 ### 后端文件 1. `backend/apps/lunaruser/models.py` - 添加status字段 2. `backend/apps/lunaruser/serializers.py` - 添加注册和审批序列化器 3. `backend/apps/lunaruser/views.py` - 添加注册和审批视图 4. `backend/apps/lunaruser/urls.py` - 添加注册和审批路由 5. `backend/apps/lunaruser/migrations/0003_myuser_status.py` - 数据库迁移文件 ### 前端文件 1. `frontend/src/pages/login/Login.vue` - 添加注册表单 2. `frontend/src/pages/user/UserManagement.vue` - 添加审批抽屉 3. `frontend/src/restful/api.js` - 添加API接口 4. `frontend/src/api/user.js` - 添加API接口 ## 注意事项 1. 所有现有用户的status默认为'approved',可以正常登录 2. 新注册用户的status默认为'pending',需要管理员审批 3. 审批通过后,status变为'approved',is_active变为true 4. 审批不通过后,status变为'rejected',is_active保持false 5. 多个超级管理员时,任何一人审批即可生效