mizuki-express/services/userService.js
2025-06-08 17:59:26 +02:00

36 lines
961 B
JavaScript

const User = require('../models/User');
const argon2 = require('argon2');
async function usernameTaken(username) {
return await User.exists({ username });
}
async function getUserByUsername(username) {
return await User.findOne({ username });
}
async function checkPassword(username, password) {
const user = await User.findOne({ username });
if (!user) return false;
return await argon2.verify(user.passwordHash, password);
}
async function createUser(username, password) {
if (await usernameTaken(username)) return null;
const hash = await argon2.hash(password);
const newUser = new User({ username, passwordHash: hash });
return await newUser.save();
}
async function updatePassword(userId, newPassword) {
const hash = await argon2.hash(newPassword);
return await User.findByIdAndUpdate(userId, { passwordHash: hash });
}
module.exports = {
usernameTaken,
getUserByUsername,
checkPassword,
createUser,
updatePassword
};