diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index ecdb8b5f77a42980993451b6b5c001153d521bbb..525bd65ddea5469aed9cca1da4301d66c3749d3a 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -127,6 +127,15 @@ public class SessionController extends AbstractController { return newSession; } + @RequestMapping(value = "/{sessionkey}", method = RequestMethod.PUT) + @ResponseBody + public final Session updateSession( + @PathVariable final String sessionkey, + @RequestBody final Session session + ) { + return sessionService.updateSession(sessionkey, session); + } + @RequestMapping(value = "/", method = RequestMethod.GET) @ResponseBody public final List<Session> getSessions( diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 58f5ba49e22c348115c2e3dbab9635cfaaacc44f..3a345212482a41440f3b43a145deb115efa8c4de 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1091,6 +1091,24 @@ public class CouchDBDao implements IDatabaseDao { return null; } + @Override + public Session updateSession(Session session) { + try { + Document s = this.database.getDocument(session.get_id()); + s.put("name", session.getName()); + s.put("shortName", session.getShortName()); + s.put("active", session.isActive()); + this.database.saveDocument(s); + session.set_rev(s.getRev()); + + return session; + } catch (IOException e) { + LOGGER.error("Could not lock session {}", session); + } + + return null; + } + @Override public void deleteSession(Session session) { try { diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 56490bb40f9fb133a75ba90f557ea8a805b6103f..d853c310fd5bd7d9d8b15c5c7532484bed8aae1d 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -128,6 +128,8 @@ public interface IDatabaseDao { List<String> getActiveUsers(int timeDifference); + Session updateSession(Session session); + void deleteSession(Session session); List<Question> getLectureQuestions(User user, Session session); diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 7efe5e0491ac75935814e5b3af7c07b2822590ef..7a54db07f45c19267d88556d2cc7fab0e87df456 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -50,5 +50,7 @@ public interface ISessionService { Session joinSession(String keyword, UUID socketId); + Session updateSession(String sessionkey, Session session); + void deleteSession(String sessionkey, User user); } diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 88c5fe8212187d9f97c9af603a5df0d24081be11..884d8553440168ff35e43311a063ee936c99c49b 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -236,6 +236,19 @@ public class SessionService implements ISessionService { return databaseDao.lockSession(session, lock); } + @Override + @Authenticated + public Session updateSession(String sessionkey, Session session) { + Session s = databaseDao.getSession(sessionkey); + User user = userService.getCurrentUser(); + + if (!s.isCreator(user)) { + throw new ForbiddenException(); + } + + return databaseDao.updateSession(session); + } + @Override @Authenticated public void deleteSession(String sessionkey, User user) { diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index 140f36b37ee1e9be01e463ec4c45f5a20ab422b6..e09f81ce475f0bede28b8e7378da6ac95d4ea840 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -393,6 +393,12 @@ public class StubDatabaseDao implements IDatabaseDao { return null; } + @Override + public Session updateSession(Session session) { + // TODO Auto-generated method stub + return null; + } + @Override public void deleteSession(Session session) { // TODO Auto-generated method stub