feat: Extension des événements avec 10 nouveaux champs - Ajout de maxParticipants, tags, organizer, participationFee - Ajout de privacyRules, transportInfo, accommodationInfo - Ajout de accessibilityInfo, parkingInfo, securityProtocol - Mise à jour des DTOs et services - Vérification des permissions pour le CRUD (créateur uniquement) - Ajout de creatorId dans EventCreateResponseDTO
This commit is contained in:
@@ -59,6 +59,16 @@ public class EventService {
|
||||
event.setCategory(eventCreateRequestDTO.getCategory());
|
||||
event.setLink(eventCreateRequestDTO.getLink());
|
||||
event.setImageUrl(eventCreateRequestDTO.getImageUrl());
|
||||
event.setMaxParticipants(eventCreateRequestDTO.getMaxParticipants());
|
||||
event.setTags(eventCreateRequestDTO.getTags());
|
||||
event.setOrganizer(eventCreateRequestDTO.getOrganizer());
|
||||
event.setParticipationFee(eventCreateRequestDTO.getParticipationFee());
|
||||
event.setPrivacyRules(eventCreateRequestDTO.getPrivacyRules());
|
||||
event.setTransportInfo(eventCreateRequestDTO.getTransportInfo());
|
||||
event.setAccommodationInfo(eventCreateRequestDTO.getAccommodationInfo());
|
||||
event.setAccessibilityInfo(eventCreateRequestDTO.getAccessibilityInfo());
|
||||
event.setParkingInfo(eventCreateRequestDTO.getParkingInfo());
|
||||
event.setSecurityProtocol(eventCreateRequestDTO.getSecurityProtocol());
|
||||
event.setCreator(creator);
|
||||
event.setStatus("ouvert");
|
||||
|
||||
@@ -132,33 +142,60 @@ public class EventService {
|
||||
* Supprime un événement par son ID.
|
||||
*
|
||||
* @param id L'ID de l'événement à supprimer.
|
||||
* @param userId L'ID de l'utilisateur qui tente de supprimer l'événement.
|
||||
* @return true si l'événement a été supprimé, false sinon.
|
||||
* @throws EventNotFoundException Si l'événement n'est pas trouvé.
|
||||
* @throws SecurityException Si l'utilisateur n'est pas le créateur de l'événement.
|
||||
*/
|
||||
@Transactional
|
||||
public boolean deleteEvent(UUID id) {
|
||||
logger.info("[logger] Tentative de suppression de l'événement avec l'ID : {}", id);
|
||||
public boolean deleteEvent(UUID id, UUID userId) {
|
||||
logger.info("[logger] Tentative de suppression de l'événement avec l'ID : {} par l'utilisateur : {}", id, userId);
|
||||
|
||||
Events event = eventsRepository.findById(id);
|
||||
if (event == null) {
|
||||
logger.warn("[logger] Échec de la suppression : événement avec l'ID {} introuvable.", id);
|
||||
throw new EventNotFoundException(id);
|
||||
}
|
||||
|
||||
// Vérifier que l'utilisateur est le créateur
|
||||
if (!canModifyEvent(event, userId)) {
|
||||
logger.error("[ERROR] L'utilisateur {} n'a pas les permissions pour supprimer l'événement {}", userId, id);
|
||||
throw new SecurityException("Vous n'avez pas les permissions pour supprimer cet événement");
|
||||
}
|
||||
|
||||
boolean deleted = eventsRepository.deleteById(id);
|
||||
if (deleted) {
|
||||
logger.info("[logger] Événement avec l'ID {} supprimé avec succès.", id);
|
||||
} else {
|
||||
logger.warn("[logger] Échec de la suppression : événement avec l'ID {} introuvable.", id);
|
||||
throw new EventNotFoundException(id);
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si un utilisateur peut modifier un événement.
|
||||
*
|
||||
* @param event L'événement à vérifier.
|
||||
* @param userId L'ID de l'utilisateur.
|
||||
* @return true si l'utilisateur peut modifier l'événement, false sinon.
|
||||
*/
|
||||
public boolean canModifyEvent(Events event, UUID userId) {
|
||||
if (event == null || event.getCreator() == null) {
|
||||
return false;
|
||||
}
|
||||
return event.getCreator().getId().equals(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Met à jour un événement dans le système.
|
||||
*
|
||||
* @param event L'événement contenant les détails mis à jour.
|
||||
* @param userId L'ID de l'utilisateur qui tente de mettre à jour l'événement.
|
||||
* @return L'événement mis à jour.
|
||||
* @throws EventNotFoundException Si l'événement n'est pas trouvé.
|
||||
* @throws SecurityException Si l'utilisateur n'est pas le créateur de l'événement.
|
||||
*/
|
||||
@Transactional
|
||||
public Events updateEvent(Events event) {
|
||||
logger.info("[logger] Tentative de mise à jour de l'événement avec l'ID : {}", event.getId());
|
||||
public Events updateEvent(Events event, UUID userId) {
|
||||
logger.info("[logger] Tentative de mise à jour de l'événement avec l'ID : {} par l'utilisateur : {}", event.getId(), userId);
|
||||
|
||||
Events existingEvent = eventsRepository.findById(event.getId());
|
||||
if (existingEvent == null) {
|
||||
@@ -166,6 +203,12 @@ public class EventService {
|
||||
throw new EventNotFoundException(event.getId());
|
||||
}
|
||||
|
||||
// Vérifier que l'utilisateur est le créateur
|
||||
if (!canModifyEvent(existingEvent, userId)) {
|
||||
logger.error("[ERROR] L'utilisateur {} n'a pas les permissions pour modifier l'événement {}", userId, event.getId());
|
||||
throw new SecurityException("Vous n'avez pas les permissions pour modifier cet événement");
|
||||
}
|
||||
|
||||
// Mettre à jour les détails de l'événement
|
||||
existingEvent.setTitle(event.getTitle());
|
||||
existingEvent.setDescription(event.getDescription());
|
||||
@@ -175,6 +218,16 @@ public class EventService {
|
||||
existingEvent.setCategory(event.getCategory());
|
||||
existingEvent.setLink(event.getLink());
|
||||
existingEvent.setImageUrl(event.getImageUrl());
|
||||
existingEvent.setMaxParticipants(event.getMaxParticipants());
|
||||
existingEvent.setTags(event.getTags());
|
||||
existingEvent.setOrganizer(event.getOrganizer());
|
||||
existingEvent.setParticipationFee(event.getParticipationFee());
|
||||
existingEvent.setPrivacyRules(event.getPrivacyRules());
|
||||
existingEvent.setTransportInfo(event.getTransportInfo());
|
||||
existingEvent.setAccommodationInfo(event.getAccommodationInfo());
|
||||
existingEvent.setAccessibilityInfo(event.getAccessibilityInfo());
|
||||
existingEvent.setParkingInfo(event.getParkingInfo());
|
||||
existingEvent.setSecurityProtocol(event.getSecurityProtocol());
|
||||
existingEvent.setStatus(event.getStatus());
|
||||
|
||||
// Persiste les modifications dans la base de données
|
||||
|
||||
Reference in New Issue
Block a user