diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 61fba7b5cb0024edda786c4f381c4416850b7ca3..548136ab62ed118ecb53ef3f41d377dd48729413 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -326,6 +326,15 @@ public class SessionController extends PaginationController { return sessionInfo; } + @ApiOperation(value = "copy a session from the public pool if enabled") + @RequestMapping(value = "/{sessionkey}/copyfrompublicpool", method = RequestMethod.POST) + public SessionInfo copyFromPublicPool( + @ApiParam(value = "session-key of the public pool session", required = true) @PathVariable final String sessionkey, + @ApiParam(value = "custom attributes for session", required = true) @RequestBody final Session sessionAttributes + ) { + SessionInfo sessionInfo = sessionService.copySessionFromPublicPool(sessionkey, sessionAttributes); + return sessionInfo; + } @ApiOperation(value = "Locks or unlocks a Session", nickname = "lockSession") diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index d5bd85aef3ff0a9cc76a4b606b40f6d3ef4b9aa9..71833870fe95358f96886ea4bc35da4e710693c8 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -86,6 +86,8 @@ public interface ISessionService { SessionInfo copySessionToPublicPool(String sessionkey, de.thm.arsnova.entities.transport.ImportExportSession.PublicPool pp); + SessionInfo copySessionFromPublicPool(String sessionkey, Session sessionAttributes); + SessionFeature getSessionFeatures(String sessionkey); SessionFeature changeSessionFeatures(String sessionkey, SessionFeature features); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 39d61752106281c8e1efc6be852b8808ae3a422a..ea6589d7db2f2a4a0066ba41c0260638d695c7d2 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -446,6 +446,22 @@ public class SessionService implements ISessionService, ApplicationEventPublishe return databaseDao.importSession(user, temp); } + @Override + @PreAuthorize("isAuthenticated() and hasPermission(#sessionkey, 'session', 'read')") + public SessionInfo copySessionFromPublicPool(final String sessionkey, final Session sessionAttributes) { + final Session ppSession = databaseDao.getSessionFromKeyword(sessionkey); + if (!"public_pool".equals(ppSession.getSessionType())) { + throw new ForbiddenException(); + } + final ImportExportSession sessionContainer = databaseDao.exportSession(sessionkey, false, false); + final ImportExportSession.ImportExportSesssion newSession = sessionContainer.getSession(); + newSession.setSessionType(""); + newSession.setName(sessionAttributes.getName()); + newSession.setShortName(sessionAttributes.getShortName()); + final User user = userService.getCurrentUser(); + return databaseDao.importSession(user, sessionContainer); + } + @Override public void setApplicationEventPublisher(ApplicationEventPublisher publisher) { this.publisher = publisher;