Files
WebWork/backend/models/User.js
祀梦 16802c85e5 feat(学生): 添加成绩分析功能及密码修改功能
- 新增成绩分析页面,包含GPA趋势图、成绩分布图和学分进度
- 实现学生密码修改功能,包括前端表单和后端验证逻辑
- 添加课程类别分析功能,展示不同类别课程的GPA表现
- 优化学生仪表板和课程页面导航链接
- 增加数据加载状态提示和错误处理
2025-12-22 21:07:21 +08:00

40 lines
1.3 KiB
JavaScript

const db = require('../config/database');
const bcrypt = require('bcryptjs');
class User {
static async findById(id) {
const users = await db.query('SELECT * FROM users WHERE id = ?', [id]);
return users[0];
}
static async findByIdAndRole(id, role) {
const users = await db.query('SELECT * FROM users WHERE id = ? AND role = ?', [id, role]);
return users[0];
}
static async create(userData) {
const { id, name, password, role, className } = userData;
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
await db.query(
'INSERT INTO users (id, name, password, role, class) VALUES (?, ?, ?, ?, ?)',
[id, name, hashedPassword, role, className || null]
);
return { id, name, role, class: className };
}
static async verifyPassword(plainPassword, hashedPassword) {
return await bcrypt.compare(plainPassword, hashedPassword);
}
static async updatePassword(id, newPassword) {
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(newPassword, salt);
await db.query('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, id]);
return true;
}
}
module.exports = User;