From f9cd240f9d002f2baf59ed1e62061de81adb35a1 Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Wed, 10 Jul 2013 10:03:28 +0200
Subject: [PATCH] Setup UserSessionServices role and user after login

It is required to setup those values after login. Current session
information will be set up after joining a session.
---
 .../de/thm/arsnova/aop/UserSessionAspect.java | 25 ++++++++++++++++++-
 .../arsnova/controller/LoginController.java   |  3 ---
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
index 1cc0eea7..bb4a5032 100644
--- a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
+++ b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
@@ -51,8 +51,31 @@ public class UserSessionAspect {
 		returning="session"
 	)
 	public final void joinSessionAdviceWithWebsocket(final JoinPoint jp, final String keyword, final UUID socketId, final Session session) {
-		userSessionService.setUser(userService.getCurrentUser());
 		userSessionService.setSession(session);
 		userSessionService.setSocketId(socketId);
 	}
+	
+	/** Sets current user, ARSnova session and websocket session ID in session scoped UserSessionService 
+	 * 
+	 * @param jp
+	 * @param keyword
+	 * @param socketId
+	 * @param session
+	 */
+	@AfterReturning(
+		pointcut="execution(public * de.thm.arsnova.controller.LoginController.doLogin(..)) " +
+				"&& args(type, guestName, forcedReferer, successUrl, failureUrl, role, ..)"
+	)
+	public final void doLogin(
+		final JoinPoint jp,
+		final String type,
+		final String guestName,
+		final String forcedReferer,
+		final String successUrl,
+		final String failureUrl,
+		final UserSessionService.Role role) {
+		
+		userSessionService.setRole(role);
+		userSessionService.setUser(userService.getCurrentUser());
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java
index 4d1aded6..ff743fb0 100644
--- a/src/main/java/de/thm/arsnova/controller/LoginController.java
+++ b/src/main/java/de/thm/arsnova/controller/LoginController.java
@@ -53,7 +53,6 @@ import org.springframework.web.servlet.view.RedirectView;
 
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
-import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
@@ -95,8 +94,6 @@ public class LoginController extends AbstractController {
 			final HttpServletRequest request,
 			final HttpServletResponse response
 	) throws IOException, ServletException {
-		userSessionService.setRole(role);
-		
 		String referer = request.getHeader("referer");
 		if (null != forcedReferer && null != referer && !UrlUtils.isAbsoluteUrl(referer)) {
 			/* Use a url from a request parameter as referer as long as the url is not absolute (to prevent
-- 
GitLab