From a7c1f60a52a2bc2e4acbdbfe8c7617697f3c70ef Mon Sep 17 00:00:00 2001
From: Axel <wiepke@uni-potsdam.de>
Date: Wed, 26 Sep 2018 10:18:57 +0200
Subject: [PATCH] fix: login works with sessions again

---
 .../gf/core/management/ManagementImpl.java       | 16 ++++++----------
 .../core/management/pageAppearance/HeadLine.java | 13 ++++++++++---
 .../gf/core/management/pageAppearance/Menu.java  | 11 ++++++++---
 .../gf/core/management/project/ProjectView.java  |  6 +++---
 .../gf/core/management/user/HiddenUserTag.java   |  2 +-
 .../core/management/user/SessionValidator.java   |  2 +-
 .../gf/core/management/user/UserDAO.java         |  8 ++++----
 .../gf/core/management/user/UserService.java     |  6 +-----
 .../assessment/controller/view/QuizView.java     |  6 +++---
 .../gf/modules/communication/ChatWindow.java     |  2 +-
 .../service/CommunicationDummyService.java       |  2 +-
 .../journal/service/JournalServiceImpl.java      |  2 +-
 .../journal/service/ProjectDescriptionImpl.java  |  2 +-
 .../src/main/webapp/core/overview-student.js     |  4 ++--
 .../gf/core/management/user/UserDAOTest.java     |  2 +-
 .../src/test/resources/database/fltrail.sql      |  3 ++-
 16 files changed, 46 insertions(+), 41 deletions(-)

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 c6c5c3f9..b37eaa31 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -12,8 +12,6 @@ import unipotsdam.gf.core.management.user.UserDAO;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
 import unipotsdam.gf.core.management.util.ResultSetUtil;
-import unipotsdam.gf.core.states.model.ProjectPhase;
-import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.groupfinding.service.GroupDAO;
 
 import javax.annotation.ManagedBean;
@@ -22,12 +20,10 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.io.FileInputStream;
 import java.sql.Blob;
-import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
-import java.util.UUID;
 
 /**
  * Created by dehne on 31.05.2018.
@@ -139,8 +135,8 @@ public class ManagementImpl implements Management {
     }
 
 
-    public User getUserByToken(String token) {
-        return userDAO.getUserByToken(token);
+    public User getUserByToken(String email) {
+        return userDAO.getUserByEmail(email);
     }
 
 
@@ -255,18 +251,18 @@ public class ManagementImpl implements Management {
     }
 
     @Override
-    public List<String> getProjectsStudent(String studentToken) {
-        if (studentToken == null) {
+    public List<String> getProjectsStudent(String studentEmail) {
+        if (studentEmail == null) {
             return null;
         }
         connect.connect();
         String mysqlRequest =
-                "SELECT projectId FROM projectuser WHERE userId=?";
+                "SELECT projectId FROM projectuser WHERE useremail=?";
 
         //49c6eeda-62d2-465e-8832-dc2db27e760c
 
         List<String> result = new ArrayList<>();
-        VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, studentToken);
+        VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, studentEmail);
         while (vereinfachtesResultSet.next()) {
             String project = vereinfachtesResultSet.getString("projectId");
             result.add(project);
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java
index 57c99d95..d870e8f0 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java
@@ -3,6 +3,7 @@ package unipotsdam.gf.core.management.pageAppearance;
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserDAO;
+import unipotsdam.gf.core.session.GFContexts;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspWriter;
@@ -15,11 +16,17 @@ public class HeadLine extends SimpleTagSupport {
     public void doTag() throws IOException {
         PageContext pageContext = (PageContext) getJspContext();
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
-        String projectId = request.getParameter("projectId");
-        String token = request.getParameter("token");
+        String userEmail = request.getSession().getAttribute(GFContexts.USEREMAIL).toString();
+        String projectId;
+        try{
+            projectId = request.getSession().getAttribute(GFContexts.PROJECTNAME).toString();
+        }catch ( Exception e){
+            projectId = null;
+        }
+
         JspWriter out = getJspContext().getOut();
         UserDAO userDAO = new UserDAO(new MysqlConnect());
-        User user = userDAO.getUserByToken(token);
+        User user = userDAO.getUserByEmail(userEmail);
         Boolean isStudent = user.getStudent();
         out.println("<div class=\"container-fluid\">\n" +
                 "            <table style=\"width:100%\">\n" +
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
index 3a194d7a..27a39988 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
@@ -23,7 +23,12 @@ public class Menu extends SimpleTagSupport {
         PageContext pageContext = (PageContext) getJspContext();
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
         String userEmail = request.getSession().getAttribute(GFContexts.USEREMAIL).toString();
-        String projectName = request.getSession().getAttribute(GFContexts.PROJECTNAME).toString();
+        String projectName;
+        try {
+            projectName = request.getSession().getAttribute(GFContexts.PROJECTNAME).toString();
+        } catch(Exception e){
+            projectName = "";
+        }
         ProjectPhase projectPhase;
         try {
             ProjectDAO projectDAO = new ProjectDAO(new MysqlConnect());
@@ -34,7 +39,7 @@ public class Menu extends SimpleTagSupport {
         JspWriter out = getJspContext().getOut();
         UserDAO userDAO = new UserDAO(new MysqlConnect());
         if (userEmail != null) {
-            User user = userDAO.getUserByToken(userEmail);
+            User user = userDAO.getUserByEmail(userEmail);
             Boolean isStudent = user.getStudent();
             if (isStudent) {
                 String menuString = "<div id=\"sidebar-wrapper\">\n" +
@@ -123,7 +128,7 @@ public class Menu extends SimpleTagSupport {
         }
         if (projectName != null)
             out.println("<p id=\"projectName\" hidden>" + projectName + "</p>");
-        User user = userDAO.getUserByToken(userEmail);
+        User user = userDAO.getUserByEmail(userEmail);
         if (user != null)
             out.println("<p id=\"userEmail\" hidden>" + user.getEmail() + "</p>");
         out.println("<p id=\"hierarchyLevel\" hidden>" + hierarchyLevel.toString() + "</p>");
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
index c1970ed6..a4de5f93 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
@@ -87,10 +87,10 @@ public class ProjectView {
     @GET
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.APPLICATION_JSON)
-    @Path("/all/student/{studentToken}")
+    @Path("/all/student/{studentEmail}")
     public java.util.List<String> getProjectsStudent(
-            @PathParam("studentToken") String studentToken) {
-        return iManagement.getProjectsStudent(studentToken);
+            @PathParam("studentEmail") String studentEmail) {
+        return iManagement.getProjectsStudent(studentEmail);
     }
 
     @GET
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
index 715c568c..5b5bfe52 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java
@@ -23,7 +23,7 @@ public class HiddenUserTag extends SimpleTagSupport {
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
         String token = request.getParameter("token");
 
-        User user = userDAO.getUserByToken(token);
+        User user = userDAO.getUserByEmail(token);
         JspWriter out = getJspContext().getOut();
         out.println("<p id=\"user\" hidden>" + user.getName() + "</p>");
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
index d5f33ab1..6618cdc3 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java
@@ -47,7 +47,7 @@ public class SessionValidator implements Filter {
             redirectToLogin(request, response);
         }
 
-        User user = userDAO.getUserByToken(token);
+        User user = userDAO.getUserByEmail(token);
         if (user == null) {
             redirectToLogin(request, response);
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java
index 01ed0681..4bbea36e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java
@@ -106,14 +106,14 @@ public class UserDAO {
         return token;
     }
 
-    public User getUserByToken(String token) {
-        return getUserByField("token", token);
-    }
-
     public User getUserByEmail(String email) {
         return getUserByField("email", email);
     }
 
+    public User getUserByToken(String token) {
+        return getUserByField("token", token);
+    }
+
     private User getUserByField(String field, String value) {
         connect.connect();
         String mysqlRequest = "SELECT * FROM users where " + field + " = ?";
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 27b85565..eacc8f09 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,7 +1,6 @@
 package unipotsdam.gf.core.management.user;
 
 import unipotsdam.gf.core.management.Management;
-import unipotsdam.gf.core.session.GFContext;
 import unipotsdam.gf.core.session.GFContexts;
 import unipotsdam.gf.interfaces.ICommunication;
 import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
@@ -9,7 +8,6 @@ import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
 import javax.annotation.ManagedBean;
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.jsp.PageContext;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -18,7 +16,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URI;
@@ -141,8 +138,7 @@ public class UserService {
     }
 
     private User fillUserFields(User user) {
-        String token = userDAO.getUserToken(user);
-        user = userDAO.getUserByToken(token);
+        user = userDAO.getUserByEmail(user.getEmail());
         return user;
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
index b8253fa4..511cb57f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
@@ -125,9 +125,9 @@ public class QuizView {
 
     @GET
     @Produces(MediaType.APPLICATION_JSON)
-    @Path("/get/project/{projectId}/student/{studentId}")
-    public Double getAssessmentForStudent(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) {
-        StudentIdentifier student = new StudentIdentifier(projectId, studentId);
+    @Path("/get/project/{projectId}/student/{studentEmail}")
+    public Double getAssessmentForStudent(@PathParam("projectId") String projectId, @PathParam("studentEmail") String studentEmail) {
+        StudentIdentifier student = new StudentIdentifier(projectId, studentEmail);
         return peer.getAssessmentForStudent(student);
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java
index 366395ce..f1a0fb96 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java
@@ -17,7 +17,7 @@ public class ChatWindow extends SimpleTagSupport {
         PageContext pageContext = (PageContext) getJspContext();
         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
         String token = request.getParameter("token");
-        //User user = management.getUserByToken(token);
+        //User user = management.getUserByEmail(token);
         String groupToken = request.getParameter("groupToken");
         String projectToken = request.getParameter("projectToken");
         //get ProjetbyToken
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
index 9fa18319..96dc4ec1 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
@@ -107,7 +107,7 @@ public class CommunicationDummyService implements ICommunication {
     }
 
     public String getChatRoomLink(String userToken, String projectToken, String groupToken) {
-        //User user = managementService.getUserByToken(userToken);
+        //User user = managementService.getUserByEmail(userToken);
         // TODO: Implement getProjectbyToken and getGroupByToken
         //Project project = managementService.getProject(projectToken
         String channelName = "general";
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
index d2107460..1541b989 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
@@ -123,7 +123,7 @@ public class JournalServiceImpl implements JournalService {
         ArrayList<User> users = new ArrayList<>();
 
         for (String id : userId) {
-            users.add(userDAO.getUserByToken(id));
+            users.add(userDAO.getUserByEmail(id));
         }
         return users;
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
index 312d664d..78ded8cb 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
@@ -90,7 +90,7 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService {
         ArrayList<User> users = new ArrayList<>();
 
         for (String id : userId) {
-            users.add(userDAO.getUserByToken(id));
+            users.add(userDAO.getUserByEmail(id));
         }
         return users;
     }
diff --git a/gemeinsamforschen/src/main/webapp/core/overview-student.js b/gemeinsamforschen/src/main/webapp/core/overview-student.js
index 9a9d08b4..85f6096f 100644
--- a/gemeinsamforschen/src/main/webapp/core/overview-student.js
+++ b/gemeinsamforschen/src/main/webapp/core/overview-student.js
@@ -1,5 +1,5 @@
 $(document).ready(function(){
-    let studentId = $('#user').html().trim();
+    let studentId = $('#userEmail').html().trim();
     getProjects(studentId);
     $('#enrollProject').on('click', function(){
         location.href="management/join-project.jsp?token="+getUserEmail();
@@ -47,7 +47,7 @@ function updateStatus(projectId){
 }
 
 function getGrade(projectId){
-    let studentId = $('#user').html().trim();
+    let studentId = $('#userEmail').html().trim();
     $.ajax({
         url: 'rest/assessments/get/project/'+projectId+'/student/'+studentId,
         headers: {
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java
index cc1e1b17..e29c15bf 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java
@@ -86,7 +86,7 @@ public class UserDAOTest {
         user.setStudent(false);
         userDAO.update(user);
         assertTrue(userDAO.exists(user));
-        User managementUser = userDAO.getUserByToken(user.getToken());
+        User managementUser = userDAO.getUserByEmail(user.getToken());
         assertEquals(user.getStudent(), managementUser.getStudent());
     }
 
diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql
index 3f675424..07602a72 100644
--- a/gemeinsamforschen/src/test/resources/database/fltrail.sql
+++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql
@@ -91,7 +91,8 @@ CREATE TABLE `projects` (
 
 CREATE TABLE `projectuser` (
   `projectId` varchar(400) NOT NULL,
-  `userId` varchar(400) NOT NULL
+  `useremail` varchar(400) NOT NULL,
+  `id` int(11) NOT NULL AUTO_INCREMENT;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE `quiz` (
-- 
GitLab