From 6e4cba7d0b91a9987a8775b26d26840fde90fc71 Mon Sep 17 00:00:00 2001
From: tekay <tom.kaesler@mni.thm.de>
Date: Tue, 19 Apr 2016 14:53:14 +0200
Subject: [PATCH] add switch for getting a session to not anonymizing the
 session

---
 .../de/thm/arsnova/controller/SessionController.java  | 11 +++++++++--
 .../java/de/thm/arsnova/services/ISessionService.java |  2 ++
 .../java/de/thm/arsnova/services/SessionService.java  |  8 +++++++-
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 1ee9bcdd..30a6c2cc 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -77,8 +77,15 @@ public class SessionController extends PaginationController {
 	@DeprecatedApi
 	@Deprecated
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET)
-	public Session joinSession(@ApiParam(value = "Session-Key from current session", required = true) @PathVariable final String sessionkey) {
-		return Session.anonymizedCopy(sessionService.getSession(sessionkey));
+	public Session joinSession(
+			@ApiParam(value = "Session-Key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value = "Adminflag", required = false) @RequestParam(value = "admin", defaultValue = "false")	final boolean admin
+			) {
+		if (admin) {
+			return sessionService.getSessionForAdmin(sessionkey);
+		} else {
+			return sessionService.getSession(sessionkey);
+		}
 	}
 
 	@ApiOperation(value = "deletes a session",
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index 368305dd..d984c3ae 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -34,6 +34,8 @@ import java.util.UUID;
 public interface ISessionService {
 	Session getSession(String keyword);
 
+	Session getSessionForAdmin(final String keyword);
+
 	Session getSessionInternal(String keyword, User user);
 
 	Session saveSession(Session session);
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 674f7109..8cbb6f79 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -160,7 +160,13 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 	@PreAuthorize("isAuthenticated()")
 	public Session getSession(final String keyword) {
 		final User user = userService.getCurrentUser();
-		return this.getSessionInternal(keyword, user);
+		return Session.anonymizedCopy(this.getSessionInternal(keyword, user));
+	}
+
+	@PreAuthorize("isAuthenticated() and hasPermission(#sessionkey, 'session', 'owner')")
+	public Session getSessionForAdmin(final String keyword) {
+		final Session session = databaseDao.getSessionFromKeyword(keyword);
+		return session;
 	}
 
 	/*
-- 
GitLab