const AuthService = require('../services/authService'); const { success, error } = require('../utils/response'); class AuthController { static async login(req, res) { try { const { id, password, role } = req.body; if (!id || !password || !role) { return error(res, '请输入完整的登录信息', 400); } const user = await AuthService.login(id, password, role); // 设置 Session req.session.user = user; success(res, { user }, '登录成功'); } catch (err) { if (err.message === '用户名或密码错误') { return error(res, err.message, 401); } console.error('Login Error:', err); error(res, '服务器错误'); } } static async register(req, res) { try { const { id, name, password, role, class: userClass } = req.body; if (!id || !name || !password || !role) { return error(res, '请填写所有必填字段', 400); } if ((role === 'student' || role === 'teacher') && !userClass) { return error(res, '学生和教师需要填写班级', 400); } await AuthService.register(req.body); success(res, null, '注册成功'); } catch (err) { if (err.message === '用户ID已存在') { return error(res, err.message, 400); } console.error('Register Error:', err); error(res, '服务器错误'); } } static async logout(req, res) { req.session.destroy((err) => { if (err) { return error(res, '注销失败'); } res.clearCookie('session_cookie'); success(res, null, '注销成功'); }); } static async getCurrentUser(req, res) { if (req.session.user) { success(res, { user: req.session.user }); } else { // 不返回 401,只返回 success: false,方便前端判断 res.json({ success: false, message: '未登录' }); } } } module.exports = AuthController;