69 lines
1.9 KiB
JavaScript
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;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|