diff --git a/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java index 2ea4ae30ee8cbeec857bb80c8dc5393c4750fab0..4f249b077da2a46baacb90a0ed50780ffb0d4eee 100644 --- a/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java +++ b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java @@ -34,14 +34,17 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; +import org.springframework.context.event.EventListener; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.security.access.annotation.Secured; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; import org.springframework.validation.Validator; import de.thm.arsnova.connector.client.ConnectorClient; import de.thm.arsnova.connector.model.Course; +import de.thm.arsnova.event.BeforeDeletionEvent; import de.thm.arsnova.event.FlipFlashcardsEvent; import de.thm.arsnova.model.Room; import de.thm.arsnova.model.UserProfile; @@ -149,6 +152,13 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R this.connectorClient = connectorClient; } + @EventListener + @Secured({"ROLE_USER", "RUN_AS_SYSTEM"}) + public void handleUserDeletion(final BeforeDeletionEvent<UserProfile> event) { + final Iterable<Room> rooms = roomRepository.findByOwnerId(event.getEntity().getId(), -1, -1); + delete(rooms); + } + @Scheduled(fixedDelay = ROOM_INACTIVITY_CHECK_INTERVAL_MS) public void deleteInactiveRooms() { if (guestRoomInactivityThresholdDays > 0) {