push de la fleme

This commit is contained in:
2024-04-19 14:05:49 +02:00
parent f7fcc0d051
commit 3cd5766843
11 changed files with 224 additions and 213 deletions

View File

@@ -3,7 +3,7 @@ let Db = null
getDatabase("brief04").then((value)=>{Db = value})
const { Logger } = require('tslog');
const {Event} = require('../models/Event')
const logger = new Logger({ name: "Auth Controller" });
//TODO Better return error integration ===
@@ -16,6 +16,8 @@ async function getEventFromIdService(id) {
return await Db.collection("events").findOne({id: id});
}
//TODO Get owned event
//TODO - To test
/**
* Retrieves all events from the database.
@@ -66,7 +68,6 @@ async function getAllEventsService(sourceId) {
}
}
//TODO - To test
/**
* Retrieves the subscribed event(s) for a given user.
*
@@ -87,9 +88,8 @@ async function getAllEventsService(sourceId) {
async function getUserSubscribedEventService(targetId) {
const subscribedEvent = await Db.collection("events").find({
members: {
$eltMatch: {
$eq: {targetId}
}}}).toArray();
$in: [`${targetId}`]
}}).toArray();
if (!subscribedEvent) {
logger.error(`No subscribed event found for USERID:${targetId}`)
return {
@@ -183,11 +183,64 @@ async function editEventService(eventId, sanitizedData) {
}
//TODO Delete event - Owner || Admin ===
async function deleteEventService(eventId) {
const deletedEventResult = await Db.collection("events").deleteOne({id: eventId});
if (deletedEventResult.deletedCount === 0) {
logger.error(`Failed to delete event (${eventId})`);
return { error: "deleteFailed" };
}
logger.info(`Event deleted successfully (${eventId})`);
return { error: "none" };
}
//TODO - To test
/**
* Create a new event and store it in the database.
*
* @param {string} ownerId - The ID of the event owner.
* @param {object} sanitizedData - The sanitized data object containing event details.
* @return {object} - An object indicating the success or failure of the event creation.
*/
async function createEventService(ownerId, sanitizedData) {
const newEvent = new Event(
`${sanitizedData.title}`,
`${sanitizedData.subTitle}`,
`${sanitizedData.base64Banner}`,
`${sanitizedData.desc}`,
`${sanitizedData.date}`,
`${sanitizedData.were}`,
Number.parseInt(`${sanitizedData.maxMembers}`),
`${ownerId}`,)
const event = {
id: newEvent.id,
title: newEvent.title,
subTitle: newEvent.subTitle,
base64Banner: newEvent.base64Banner,
desc: newEvent.desc,
date: newEvent.date,
were: newEvent.were,
maxMembers: newEvent.maxMembers,
authorId: newEvent.authorId,
members: newEvent.members
};
const insertedEventResult = await Db.collection("events").insertOne(event);
if (insertedEventResult.insertedCount === 0) {
logger.error(`Failed to create event (${event.id})`);
return { error: "createFailed" };
}
logger.info(`Event created successfully (${event.id})`);
return {
error: "none",
eventId: event.id
};
}
module.exports = {
getEventFromIdService,
getAllEventsService,
getUserSubscribedEventService,
alterUserSubscribedEventStateService,
editEventService
editEventService,
createEventService,
deleteEventService
}

View File

@@ -174,6 +174,12 @@ async function LoginService(sanitizedData) {
*/
async function getAllUsersService() {
const users = await Db.collection("users").find().toArray();
// biome-ignore lint/complexity/noForEach: <explanation>
users.forEach(user => {
delete user.passwordHash
delete user._id
delete user.gdpr
});
logger.info(`Query ${users.length} user(s)`)
return {
iat: Date.now(),
@@ -192,6 +198,12 @@ async function getAllUsersService() {
* Otherwise, the error property will be a string "none".
*/
async function editUserService(targetId, sanitizedData) {
if (sanitizedData.password) {
const passwordHash = await getHashFromPassword(sanitizedData.password)
delete sanitizedData.password
logger.info(`Changing password for user "${targetId}"`)
sanitizedData.passwordHash = passwordHash
}
const updatedUserResult = await Db.collection("users").updateOne({id: targetId}, {$set: sanitizedData});
if (updatedUserResult.modifiedCount === 0) {
logger.info(`EDIT :> User not found (${targetId})`);