Skip to content
Snippets Groups Projects
Commit 5e8268a2 authored by Paul-Christian Volkmer's avatar Paul-Christian Volkmer
Browse files

Added simple session scoped bean to hold user and session

This bean holds user and session object of the current user after he
joins a session and could be used to access those objects within the
application.

Added two simple URIs to get a JSON representation of the referenced
objects.
parent ccb2c45c
Branches
Tags
No related merge requests found
...@@ -51,8 +51,10 @@ import org.springframework.web.bind.annotation.ResponseBody; ...@@ -51,8 +51,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.View; import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.RedirectView; import org.springframework.web.servlet.view.RedirectView;
import de.thm.arsnova.entities.Session;
import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.User;
import de.thm.arsnova.services.IUserService; import de.thm.arsnova.services.IUserService;
import de.thm.arsnova.services.UserSessionService;
@Controller @Controller
public class LoginController extends AbstractController { public class LoginController extends AbstractController {
...@@ -73,6 +75,9 @@ public class LoginController extends AbstractController { ...@@ -73,6 +75,9 @@ public class LoginController extends AbstractController {
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired
private UserSessionService userSessionService;
public static final Logger LOGGER = LoggerFactory.getLogger(LoginController.class); public static final Logger LOGGER = LoggerFactory.getLogger(LoginController.class);
...@@ -154,4 +159,16 @@ public class LoginController extends AbstractController { ...@@ -154,4 +159,16 @@ public class LoginController extends AbstractController {
} }
return new RedirectView(request.getHeader("referer") != null ? request.getHeader("referer") : "/"); 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();
}
} }
...@@ -43,6 +43,7 @@ import de.thm.arsnova.entities.Session; ...@@ -43,6 +43,7 @@ import de.thm.arsnova.entities.Session;
import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.User;
import de.thm.arsnova.services.ISessionService; import de.thm.arsnova.services.ISessionService;
import de.thm.arsnova.services.IUserService; 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.SessionNameComperator;
import de.thm.arsnova.services.SessionService.SessionShortNameComperator; import de.thm.arsnova.services.SessionService.SessionShortNameComperator;
...@@ -58,10 +59,16 @@ public class SessionController extends AbstractController { ...@@ -58,10 +59,16 @@ public class SessionController extends AbstractController {
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired
private UserSessionService userSessionService;
@RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET) @RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public final Session joinSession(@PathVariable final String sessionkey) { 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) @RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE)
......
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
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;
}
}
...@@ -17,4 +17,14 @@ ...@@ -17,4 +17,14 @@
</bean> </bean>
<bean id="userService" class="de.thm.arsnova.services.StubUserService" /> <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> </beans>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment