'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; } }