diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index 9fd538ab6910c29b3b5dd0ddee1fac29d457503d..40e8b3bdcecca49c4b60a07320fe8d2d1f6f9791 100644 --- a/src/main/java/de/thm/arsnova/controller/LoginController.java +++ b/src/main/java/de/thm/arsnova/controller/LoginController.java @@ -51,8 +51,10 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.View; import org.springframework.web.servlet.view.RedirectView; +import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; import de.thm.arsnova.services.IUserService; +import de.thm.arsnova.services.UserSessionService; @Controller public class LoginController extends AbstractController { @@ -73,6 +75,9 @@ public class LoginController extends AbstractController { @Autowired private IUserService userService; + + @Autowired + private UserSessionService userSessionService; public static final Logger LOGGER = LoggerFactory.getLogger(LoginController.class); @@ -154,4 +159,16 @@ public class LoginController extends AbstractController { } return new RedirectView(request.getHeader("referer") != null ? request.getHeader("referer") : "/"); } + + @RequestMapping(value = { "/test/me" }, method = RequestMethod.GET) + @ResponseBody + public final User me() { + return userSessionService.getUser(); + } + + @RequestMapping(value = { "/test/mysession" }, method = RequestMethod.GET) + @ResponseBody + public final Session mysession() { + return userSessionService.getSession(); + } } diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 6d46ace9596a0a11ab8de143bce45c90349229b2..59b9e529b7edc209bbfa2ad541e6a6a21aabfa0f 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -43,6 +43,7 @@ import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; import de.thm.arsnova.services.ISessionService; import de.thm.arsnova.services.IUserService; +import de.thm.arsnova.services.UserSessionService; import de.thm.arsnova.services.SessionService.SessionNameComperator; import de.thm.arsnova.services.SessionService.SessionShortNameComperator; @@ -58,10 +59,16 @@ public class SessionController extends AbstractController { @Autowired private IUserService userService; + @Autowired + private UserSessionService userSessionService; + @RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET) @ResponseBody public final Session joinSession(@PathVariable final String sessionkey) { - return sessionService.joinSession(sessionkey); + Session session = sessionService.joinSession(sessionkey); + userSessionService.setUser(userService.getCurrentUser()); + userSessionService.setSession(session); + return session; } @RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE) diff --git a/src/main/java/de/thm/arsnova/services/UserSessionService.java b/src/main/java/de/thm/arsnova/services/UserSessionService.java new file mode 100644 index 0000000000000000000000000000000000000000..ea5b096836602038cb602d2288c71d13f6272682 --- /dev/null +++ b/src/main/java/de/thm/arsnova/services/UserSessionService.java @@ -0,0 +1,14 @@ +package de.thm.arsnova.services; + +import de.thm.arsnova.entities.Session; +import de.thm.arsnova.entities.User; + +public interface UserSessionService { + + void setUser(User user); + User getUser(); + + void setSession(Session session); + Session getSession(); + +} \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..cbc8bc2008104f42cb4729f74954a649ac2d2f8e --- /dev/null +++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java @@ -0,0 +1,35 @@ +package de.thm.arsnova.services; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import de.thm.arsnova.entities.Session; +import de.thm.arsnova.entities.User; + +@Component +@Scope("session") +public class UserSessionServiceImpl implements UserSessionService { + + private User user; + private Session session; + + @Override + public void setUser(User u) { + this.user = u; + } + + @Override + public User getUser() { + return user; + } + + @Override + public void setSession(Session s) { + this.session = s; + } + + @Override + public Session getSession() { + return this.session; + } +} diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml index 1ef56bd0a43f9a898f7e34f04d76917a90d3d11f..1b6ae97af84c9bd28970863243c22ecc7e062a7b 100644 --- a/src/test/resources/test-config.xml +++ b/src/test/resources/test-config.xml @@ -17,4 +17,14 @@ </bean> <bean id="userService" class="de.thm.arsnova.services.StubUserService" /> + + <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer"> + <property name="scopes"> + <map> + <entry key="session"> + <bean class="org.springframework.context.support.SimpleThreadScope"/> + </entry> + </map> + </property> + </bean> </beans>