iut-hapi/lib/services/user.js

69 lines
1.9 KiB
JavaScript

'use strict';
const { Service } = require('@hapipal/schmervice');
const { encryptSha1, compareSha1 } = require('iut-encrypt-cemal'); // Importe les fonctions d'encryption
module.exports = class UserService extends Service {
create(user){
const { User } = this.server.models();
return User.query().insertAndFetch(user);
}
async update(id, userData) {
const { User } = this.server.models();
// Récupère l'utilisateur à mettre à jour
let user = await User.query().findById(id);
if (!user) {
throw new Error(`User with ID ${id} not found.`);
}
// Extrait les champs nécessaires de userData
const { firstName, lastName, username, email, password } = userData;
// Met à jour les champs de l'utilisateur avec les nouvelles valeurs
user = {
...user,
firstName,
lastName,
username,
email,
password: password ? encryptSha1(password) : user.password // Si un nouveau mot de passe est fourni, encrypte-le
};
// Effectue la mise à jour de l'utilisateur dans la base de données
return await User.query().patchAndFetchById(id, user);
}
// Méthode pour supprimer un utilisateur
async delete(id) {
const { User } = this.server.models();
// Récupère l'utilisateur à supprimer
const user = await User.query().findById(id);
if (!user) {
throw new Error(`User with ID ${id} not found.`);
}
// Supprime l'utilisateur de la base de données
return await User.query().deleteById(id);
}
// Méthode pour récupérer un utilisateur par son email
async getByEmail(email) {
const {User} = this.server.models();
const user = await User.query().findOne({email});
return user;
}
}