From 9426225088ead68d7c511ad73473e0538cabfeca Mon Sep 17 00:00:00 2001 From: Julian Dehne <julian.dehne@uni-potsdam.de> Date: Tue, 5 Jun 2018 15:20:51 +0200 Subject: [PATCH] bigfixing: the an error with the switch cases for docent-student refactoring: simplified package structure (no servlet/tag folders needed) documentation: added some comments to the service classes --- .../user/{tags => }/HiddenUserTag.java | 6 +- .../user/{servlets => }/SessionValidator.java | 9 +-- .../core/management/user/UserInterests.java | 2 +- .../management/{ => user}/UserService.java | 70 ++++++++++++++----- .../src/main/webapp/WEB-INF/web.xml | 2 +- .../webapp/core/pages/hiddenUserField.tld | 2 +- 6 files changed, 67 insertions(+), 24 deletions(-) rename gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/{tags => }/HiddenUserTag.java (78%) rename gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/{servlets => }/SessionValidator.java (85%) rename gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/{ => user}/UserService.java (58%) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/tags/HiddenUserTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java similarity index 78% rename from gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/tags/HiddenUserTag.java rename to gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java index 57b65221..57b6326c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/tags/HiddenUserTag.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java @@ -1,4 +1,4 @@ -package unipotsdam.gf.core.management.user.tags; +package unipotsdam.gf.core.management.user; import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.user.User; @@ -8,6 +8,10 @@ import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; +/** + * implemented while porting the login page. It might be useful to have a hidden user field on the page in order to + * manipulate the user data with jquery + */ public class HiddenUserTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { PageContext pageContext = (PageContext) getJspContext(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/servlets/SessionValidator.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java similarity index 85% rename from gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/servlets/SessionValidator.java rename to gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java index e3b181c5..8fd6c0f6 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/servlets/SessionValidator.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java @@ -1,16 +1,17 @@ -package unipotsdam.gf.core.management.user.servlets; +package unipotsdam.gf.core.management.user; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unipotsdam.gf.core.management.ManagementImpl; -import unipotsdam.gf.core.management.user.User; import javax.servlet.*; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +/** + * this filter can be applied to a given space in order to validate, that the tag in the url is a valid one + * not applied to to a folder yet (because might lead to confusing experiences in debugging) + */ public class SessionValidator implements Filter { Logger log = LoggerFactory.getLogger(SessionValidator.class); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserInterests.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserInterests.java index 229421d5..eb37453d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserInterests.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserInterests.java @@ -3,6 +3,6 @@ package unipotsdam.gf.core.management.user; /** * Created by dehne on 31.05.2018. */ -// user data that is created on a project basis +// user data that is created on a project basis - needs to be implemented by Marjen for her group formation public class UserInterests { } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java similarity index 58% rename from gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/UserService.java rename to gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java index 18b40c82..41af68ce 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/UserService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java @@ -1,5 +1,6 @@ -package unipotsdam.gf.core.management; +package unipotsdam.gf.core.management.user; +import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.interfaces.IMunschkin; import unipotsdam.gf.modules.munchkin.controller.MunchkinImpl; @@ -16,6 +17,15 @@ import java.net.URISyntaxException; @Path("/user") public class UserService { + /** + * creates a user with given credentials + * @param name + * @param password + * @param email + * @param isStudent + * @return + * @throws URISyntaxException + */ // This method is called if HTML is request @POST @Produces(MediaType.TEXT_HTML) @@ -23,15 +33,20 @@ public class UserService { public Response createUser(@FormParam("name") String name, @FormParam("password") String password, @FormParam("email") String email, @FormParam("isStudent") String isStudent) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); - User user = new User(name, password, email, isStudent == null); return login(true, user); } - + /** + * checks if a user exists in order to log him in + * @param name + * @param password + * @param email + * @return + * @throws URISyntaxException + */ // This method is called if HTML is request @POST @Produces(MediaType.TEXT_HTML) @@ -41,17 +56,23 @@ public class UserService { throws URISyntaxException { ManagementImpl management = new ManagementImpl(); - User user = new User(name, password, email, null); return login(false, user); } - - - + /** + * if create User is true, the user is created and logged in if he does not exist + * @param createUser + * @param user + * @return + * @throws URISyntaxException + */ protected Response login(boolean createUser, User user) throws URISyntaxException { ManagementImpl management = new ManagementImpl(); if (management.exists(user)) { + if (!createUser) { + return redirectToProjectPage(user, management); + } String existsUrl = "../register.jsp?userExists=true"; return forwardToLocation(existsUrl); } else { @@ -61,17 +82,34 @@ public class UserService { String existsUrl = "../index.jsp?userExists=false"; return forwardToLocation(existsUrl); } - String successUrl; - if (user.getStudent() != null && user.getStudent()) { - successUrl = "../pages/overview-student.html?token="; - } else { - successUrl = "../pages/overview-docent.html?token="; - } - successUrl += management.getUserToken(user); - return forwardToLocation(successUrl); + return redirectToProjectPage(user, management); + } + } + + /** + * helper function for redirecting to the right project page + * @param user + * @param management + * @return + * @throws URISyntaxException + */ + private Response redirectToProjectPage(User user, ManagementImpl management) throws URISyntaxException { + String successUrl; + if (user.getStudent() != null && user.getStudent()) { + successUrl = "../pages/overview-student.html?token="; + } else { + successUrl = "../pages/overview-docent.html?token="; } + successUrl += management.getUserToken(user); + return forwardToLocation(successUrl); } + /** + * * helper function for redirecting to a new page + * @param existsUrl + * @return + * @throws URISyntaxException + */ private Response forwardToLocation(String existsUrl) throws URISyntaxException { return Response.seeOther(new URI(existsUrl)).build(); } diff --git a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml index fed2d8a9..be128ff4 100644 --- a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml +++ b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml @@ -41,7 +41,7 @@ <!-- loginFilter --> <filter> <filter-name>RequestLoggingFilter</filter-name> <!-- mandatory --> - <filter-class>unipotsdam.gf.core.management.user.servlets.SessionValidator</filter-class> <!-- mandatory --> + <filter-class>unipotsdam.gf.core.management.user.SessionValidator</filter-class> <!-- mandatory --> </filter> <filter-mapping> diff --git a/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld b/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld index bfb16172..bb1ceeb1 100644 --- a/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld +++ b/gemeinsamforschen/src/main/webapp/core/pages/hiddenUserField.tld @@ -5,7 +5,7 @@ <tag> <name>hiddenUserTag</name> - <tag-class>unipotsdam.gf.core.management.user.tags.HiddenUserTag</tag-class> + <tag-class>unipotsdam.gf.core.management.user.HiddenUserTag</tag-class> <body-content>empty</body-content> </tag> </taglib> \ No newline at end of file -- GitLab