Files
WebWork/backend/controllers/authController.js
祀梦 e5a2a9d042 feat: 添加学生个人中心页面和数据库备份功能
refactor(auth): 重构认证模块适配Bootstrap 5样式
feat(controller): 在登录响应中返回用户对象
feat(server): 添加学生个人中心路由
refactor(models): 重构学生和成绩模型结构
style: 更新登录和注册页面UI设计
chore: 添加数据库备份脚本和空备份文件
2025-12-21 22:34:29 +08:00

70 lines
2.2 KiB
JavaScript
Raw 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: '未登录' });
}
}
}
module.exports = AuthController;