Files
WebWork/backend/controllers/authController.js
祀梦 b1da021185 feat: 实现教师资料更新、操作日志和系统设置功能
新增教师资料更新功能,包括个人信息修改和密码更新
添加操作日志记录系统,记录用户关键操作
实现系统设置模块,支持动态配置系统参数
重构数据库模型,新增教师表和系统设置表
优化成绩录入逻辑,支持平时分、期中和期末成绩计算
添加数据导出功能,支持学生、教师和成绩数据导出
完善管理员后台,增加统计图表和操作日志查看
2025-12-22 23:30:01 +08:00

110 lines
3.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: '未登录' });
}
}
static async updatePassword(req, res) {
try {
const userId = req.session.user.id;
const { oldPassword, newPassword } = req.body;
if (!oldPassword || !newPassword) {
return error(res, '请提供原密码和新密码', 400);
}
await AuthService.updatePassword(userId, oldPassword, newPassword);
success(res, null, '密码修改成功');
} catch (err) {
if (err.message === '原密码错误' || err.message === '用户不存在') {
return error(res, err.message, 400);
}
console.error('Update Password Error:', err);
error(res, '服务器错误');
}
}
static async updateProfile(req, res) {
try {
const userId = req.session.user.id;
const updateData = req.body;
const updatedUser = await AuthService.updateProfile(userId, updateData);
// 更新 Session 中的用户信息
req.session.user = {
...req.session.user,
...updatedUser
};
success(res, { user: req.session.user }, '资料更新成功');
} catch (err) {
console.error('Update Profile Error:', err);
error(res, '服务器错误');
}
}
}
module.exports = AuthController;