33 lines
1.0 KiB
JavaScript
33 lines
1.0 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);
|
|
}
|
|
}
|
|
|
|
module.exports = User; |