From 2e5d49aa71683ed96dcd5f3d232879157af31629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20St=C3=A4hr?= <software@mstaehr.net> Date: Wed, 6 Jun 2018 20:55:27 +0200 Subject: [PATCH] feat: implemented dummyservice and registration mechanism --- .../gf/core/management/ManagementImpl.java | 4 +- .../gf/core/management/user/User.java | 26 +++++++++ .../gf/core/management/user/UserService.java | 54 +++++++++++++----- .../service/CommunicationDummyService.java | 55 +++++++++++++++++++ gemeinsamforschen/src/main/webapp/index.jsp | 17 +++++- .../src/main/webapp/register.jsp | 21 +++++-- .../CommunicationDummyServiceTest.java | 38 +++++++++++++ 7 files changed, 193 insertions(+), 22 deletions(-) create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java create mode 100644 gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/service/CommunicationDummyServiceTest.java diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index d16651d0..dfffd4df 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -112,8 +112,10 @@ public class ManagementImpl implements Management { String name = vereinfachtesResultSet.getString("name"); String password = vereinfachtesResultSet.getString("password"); String email = vereinfachtesResultSet.getString("email"); + String rocketChatId = vereinfachtesResultSet.getString("rocketchatid"); Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent"); - return new User(name, password, email, isStudent); + + return new User(name, password, email, rocketChatId, isStudent); } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java index bf184705..22f61571 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java @@ -13,6 +13,8 @@ public class User { private String password; private String email; private String token; + private String rocketChatAuthToken; + private String rocketChatId; private Boolean isStudent; public User() { @@ -25,6 +27,14 @@ public class User { this.isStudent = isStudent; } + public User(String name, String password, String email, String rocketChatId, Boolean isStudent) { + this.name = name; + this.password = password; + this.email = email; + this.rocketChatId = rocketChatId; + this.isStudent = isStudent; + } + public String getName() { return name; } @@ -66,4 +76,20 @@ public class User { public void setStudent(Boolean student) { isStudent = student; } + + public String getRocketChatId() { + return rocketChatId; + } + + public void setRocketChatId(String rocketChatId) { + this.rocketChatId = rocketChatId; + } + + public String getRocketChatAuthToken() { + return rocketChatAuthToken; + } + + public void setRocketChatAuthToken(String rocketChatAuthToken) { + this.rocketChatAuthToken = rocketChatAuthToken; + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java index 41af68ce..55ce5e59 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java @@ -1,14 +1,13 @@ 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; -import unipotsdam.gf.modules.munchkin.model.Munschkin; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.communication.service.CommunicationDummyService; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.*; +import javax.ws.rs.FormParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.net.URI; @@ -19,6 +18,7 @@ public class UserService { /** * creates a user with given credentials + * * @param name * @param password * @param email @@ -33,14 +33,21 @@ 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); + ICommunication iCommunication = new CommunicationDummyService(); + boolean chatUserCreated = iCommunication.registerUser(user); + if (chatUserCreated) { + return login(true, user); + } else { + return registrationError(); + } } - - + /** * checks if a user exists in order to log him in + * * @param name * @param password * @param email @@ -56,12 +63,21 @@ public class UserService { throws URISyntaxException { ManagementImpl management = new ManagementImpl(); - User user = new User(name, password, email, null); - return login(false, user); + User user = new User(name, password, email, null); + ICommunication iCommunication = new CommunicationDummyService(); + boolean isLoggedIn = iCommunication.loginUser(user); + if (isLoggedIn) { + return login(false, user); + } else { + return loginError(); + } + + } /** * if create User is true, the user is created and logged in if he does not exist + * * @param createUser * @param user * @return @@ -86,8 +102,19 @@ public class UserService { } } + private Response registrationError() throws URISyntaxException { + String existsUrl = "../register.jsp?registrationError=true"; + return forwardToLocation(existsUrl); + } + + private Response loginError() throws URISyntaxException { + String existsUrl = "../index.jsp?loginError=true"; + return forwardToLocation(existsUrl); + } + /** * helper function for redirecting to the right project page + * * @param user * @param management * @return @@ -105,7 +132,8 @@ public class UserService { } /** - * * helper function for redirecting to a new page + * * helper function for redirecting to a new page + * * @param existsUrl * @return * @throws URISyntaxException diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java new file mode 100644 index 00000000..b2b4fe61 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java @@ -0,0 +1,55 @@ +package unipotsdam.gf.modules.communication.service; + +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.communication.model.Message; +import unipotsdam.gf.modules.communication.model.chat.ChatMessage; +import unipotsdam.gf.modules.communication.model.chat.ChatRoom; + +import java.util.List; + +public class CommunicationDummyService implements ICommunication { + + @Override + public List<ChatMessage> getChatHistory(String roomId) { + return null; + } + + @Override + public boolean sendMessageToChat(Message message) { + return false; + } + + @Override + public String createChatRoom(String name, List<User> studentIdentifierList) { + return null; + } + + @Override + public boolean addUserToChatRoom(String roomId, User user) { + return false; + } + + @Override + public boolean setChatRoomTopic(String roomId, String topic) { + return false; + } + + @Override + public ChatRoom getChatRoomInfo(String roomId) { + return null; + } + + @Override + public boolean loginUser(User user) { + user.setRocketChatId("1"); + user.setRocketChatAuthToken("abc"); + return true; + } + + @Override + public boolean registerUser(User user) { + user.setRocketChatId("1"); + return true; + } +} diff --git a/gemeinsamforschen/src/main/webapp/index.jsp b/gemeinsamforschen/src/main/webapp/index.jsp index 456d3a5e..d8080c28 100644 --- a/gemeinsamforschen/src/main/webapp/index.jsp +++ b/gemeinsamforschen/src/main/webapp/index.jsp @@ -30,12 +30,23 @@ <button class="btn btn-primary btn-block" type="submit">login</button> <!-- scriptlets are terrible. Just tmp for porting the php --> <% - String param = request.getParameter("userExists"); - if (param != null) { + String message = ""; + + String userExists = request.getParameter("userExists"); + if (userExists != null) { + message = "Nutzer oder Passwort inkorrekt"; + } + + String loginError = request.getParameter("loginError"); + if (loginError != null) { + message = "Login bei RocketChat fehlgeschlagen! Bitte kontaktieren Sie den Administrator"; + } + + if (!message.isEmpty()) { try { PrintWriter p = response.getWriter(); p.println( - "<div class=\"alert alert-danger\" role=\"alert\"> Nutzer oder Passwort inkorrekt</div>"); + "<div class=\"alert alert-danger\" role=\"alert\"> " + message + "</div>"); } finally { } diff --git a/gemeinsamforschen/src/main/webapp/register.jsp b/gemeinsamforschen/src/main/webapp/register.jsp index b26260ff..0396159d 100644 --- a/gemeinsamforschen/src/main/webapp/register.jsp +++ b/gemeinsamforschen/src/main/webapp/register.jsp @@ -43,8 +43,8 @@ <div class="form-group"> <!-- scriptlets are terrible. Just tmp for porting the php --> <%-- <% - String param = request.getParameter("userExists"); - if (param != null) { + String userExists = request.getParameter("userExists"); + if (userExists != null) { try (PrintWriter p = response.getWriter()) { p.println( "<div class=\"alert alert-danger\" role=\"alert\"> Es existiert ein Nutzer mit dieser Email oder diesem Benutzernamen! </div>"); @@ -53,12 +53,23 @@ %>--%> <% - String param = request.getParameter("userExists"); - if (param != null) { + String message = ""; + + String userExists = request.getParameter("userExists"); + if (userExists != null) { + message = "Es existiert ein Nutzer mit dieser Email oder diesem Benutzernamen!"; + } + + String registrationError = request.getParameter("registrationError"); + if (registrationError != null) { + message = "Es ist ein Fehler beim Erstellen des Rocket Chat-Nutzers aufgetreten. Bitte kontaktieren Sie den Administrator"; + } + + if (!message.isEmpty()) { try { PrintWriter p = response.getWriter(); p.println( - "<div class=\"alert alert-danger\" role=\"alert\"> Es existiert ein Nutzer mit dieser Email oder diesem Benutzernamen! </div>"); + "<div class=\"alert alert-danger\" role=\"alert\"> " + message + " </div>"); } finally { } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/service/CommunicationDummyServiceTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/service/CommunicationDummyServiceTest.java new file mode 100644 index 00000000..76eb6fcd --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/service/CommunicationDummyServiceTest.java @@ -0,0 +1,38 @@ +package unipotsdam.gf.modules.communication.service; + +import org.junit.Before; +import org.junit.Test; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.interfaces.ICommunication; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +public class CommunicationDummyServiceTest { + + private ICommunication iCommunication; + private User user; + + @Before + public void setUp() { + iCommunication = new CommunicationDummyService(); + user = new User("name", "password", "email", true); + } + + @Test + public void loginUser() { + boolean isLoggedIn = iCommunication.loginUser(user); + assertNotNull(user.getRocketChatId()); + assertNotNull(user.getRocketChatAuthToken()); + assertTrue(isLoggedIn); + } + + @Test + public void registerUser() { + boolean userCreated = iCommunication.registerUser(user); + assertNotNull(user.getRocketChatId()); + assertNull(user.getRocketChatAuthToken()); + assertTrue(userCreated); + } +} -- GitLab