Browse Source

Добавил бэк для страниц заказчика и админа

Кинетик 5 years ago
parent
commit
fc06e8afb7

+ 40 - 0
src/EntitiesDao/AdminDao.java

@@ -0,0 +1,40 @@
+package EntitiesDao;
+
+import HibernateEntities.ClientsEntity;
+import HibernateEntities.ModeratorsEntity;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import static HibernateUtil.HibernateUtil.getSession;
+
+/**
+ * Created by Кинетик on 31.12.2016.
+ */
+public class AdminDao {
+    public static HashMap<String, String> getAdminMap(){
+        Session session = getSession();
+        Query query = session.createQuery("FROM ModeratorsEntity ");
+        List<ModeratorsEntity> res = query.list();
+        HashMap<String,String> adminsDict = new HashMap<>();
+        for(ModeratorsEntity ad: res){
+            adminsDict.put(ad.getModFamily()+" "+ad.getModFirstName()+" "+ad.getModSecName(),ad.getModPassword());
+        }
+        session.close();
+        return adminsDict;
+    }
+    public static ArrayList<String> getAdminList(){
+        Session session = getSession();
+        Query query = session.createQuery("FROM ModeratorsEntity ");
+        List<ModeratorsEntity> res = query.list();
+        ArrayList<String> adminsList = new ArrayList<>();
+        for(ModeratorsEntity ad: res){
+            adminsList.add(ad.getModFamily()+" "+ad.getModFirstName()+" "+ad.getModSecName());
+        }
+        session.close();
+        return adminsList;
+    }
+}

+ 39 - 0
src/EntitiesDao/ClientsDao.java

@@ -0,0 +1,39 @@
+package EntitiesDao;
+
+import HibernateEntities.ClientsEntity;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import static HibernateUtil.HibernateUtil.getSession;
+
+/**
+ * Created by Кинетик on 31.12.2016.
+ */
+public class ClientsDao {
+    public static HashMap<String, String> getClientMap(){
+        Session session = getSession();
+        Query query = session.createQuery("FROM ClientsEntity ");
+        List<ClientsEntity> res = query.list();
+        HashMap<String,String> clientsDict = new HashMap<>();
+        for(ClientsEntity cl: res){
+            clientsDict.put(cl.getClFamily()+" "+cl.getClFirstName()+" "+cl.getClSecName(),cl.getClPassword());
+        }
+        session.close();
+        return clientsDict;
+    }
+    public static ArrayList<String> getClientList(){
+        Session session = getSession();
+        Query query = session.createQuery("FROM ClientsEntity ");
+        List<ClientsEntity> res = query.list();
+        ArrayList<String> clientsList = new ArrayList<>();
+        for(ClientsEntity cl: res){
+            clientsList.add(cl.getClFamily()+" "+cl.getClFirstName()+" "+cl.getClSecName());
+        }
+        session.close();
+        return clientsList;
+    }
+}

+ 25 - 0
src/LoginEntities/LoginClient.java

@@ -0,0 +1,25 @@
+package LoginEntities;
+
+/**
+ * Created by Кинетик on 31.12.2016.
+ */
+public class LoginClient {
+    private String name;
+    private String password;
+
+    public String getName() {
+        return name;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+}

+ 54 - 4
src/controller/controller.java

@@ -2,7 +2,9 @@ package controller;
 
 
 import EntitiesDao.UsersDao;
+import HibernateEntities.ClientsEntity;
 import HibernateEntities.UsersEntity;
+import LoginEntities.LoginClient;
 import LoginEntities.LoginUser;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.ModelAttribute;
@@ -10,16 +12,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.servlet.ModelAndView;
 
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+
+import static EntitiesDao.AdminDao.getAdminList;
+import static EntitiesDao.AdminDao.getAdminMap;
+import static EntitiesDao.ClientsDao.getClientList;
+import static EntitiesDao.ClientsDao.getClientMap;
 
 /**
  * Created by Кинетик on 28.12.2016.
  */
 @Controller
 public class controller {
+    //Мапит запрос на вход на сайт, возвращает страницу index и грузит в нее объект, чтобы записывать данные в него
     @RequestMapping(value = "/", method = RequestMethod.GET)
     public ModelAndView main() {
         ModelAndView modelAndView = new ModelAndView();
@@ -27,6 +32,7 @@ public class controller {
         modelAndView.setViewName("index");
         return modelAndView;
     }
+    //Метод осуществляет проверку первого уровня аутентификации. Комментарий про мапу аналогичен след методу - надо подумать+посовещаться
     @RequestMapping(value = "/check-user")
     public ModelAndView checkUser(@ModelAttribute("userJSP") LoginUser user) {
         ModelAndView modelAndView = new ModelAndView();
@@ -35,7 +41,14 @@ public class controller {
             if(userDict.get(user.getName()).getUserPassword().equals(user.getPassword())){
                 if(Objects.equals(user.getName(), "модератор")){
                     modelAndView.setViewName("adminBar");
+                    ArrayList<String> adminList = getAdminList();
+                    //Нет смысла создавать LoginAdmin - поля те же, что и у заказчика
+                    modelAndView.addObject("adminLogin", new LoginClient());
+                    modelAndView.addObject("adminList", adminList);
                 } else if(Objects.equals(user.getName(), "заказчик")){
+                    ArrayList<String> clientList = getClientList();
+                    modelAndView.addObject("clientLogin", new LoginClient());
+                    modelAndView.addObject("clientList", clientList);
                     modelAndView.setViewName("ownerBar");
                 } else {
                     modelAndView.setViewName("studentBar");
@@ -51,4 +64,41 @@ public class controller {
 
         return modelAndView;
     }
+    @RequestMapping(value = "/checkClient")
+    public ModelAndView checkClient(@ModelAttribute("clientLogin") LoginClient client){
+        ModelAndView mv = new ModelAndView();
+        /*За эту мапу вообще стыдно, в перспективе подумать как переписать - что быстрее запросить пользователя с логином из БД
+        или вот так вытащить все. Пока думаю, что теряем в памяти - приобретаем в скорости и наоборот
+         */
+        HashMap<String, String> clientAll = getClientMap();
+        if(clientAll.containsKey(client.getName())){
+            if(clientAll.get(client.getName()).equals(client.getPassword())){
+                mv.setViewName("ownerIn");
+            } else {
+                mv.setViewName("ownerBar");
+                mv.addObject("message", "Bad password");
+            }
+        } else {
+            mv.setViewName("ownerBar");
+            mv.addObject("message", "Bad login");
+        }
+        return mv;
+    }
+    @RequestMapping(value = "/checkAdmin")
+    public ModelAndView checkAdmin(@ModelAttribute("adminLogin") LoginClient admin){
+        ModelAndView mv = new ModelAndView();
+        HashMap<String, String> adminMap = getAdminMap();
+        if(adminMap.containsKey(admin.getName())){
+            if(adminMap.get(admin.getName()).equals(admin.getPassword())){
+                mv.setViewName("adminIn");
+            } else {
+                mv.setViewName("adminBar");
+                mv.addObject("message", "Bad password");
+            }
+        } else {
+            mv.setViewName("adminBar");
+            mv.addObject("message", "Bad login");
+        }
+        return mv;
+    }
 }

+ 10 - 1
web/WEB-INF/views/adminBar.jsp

@@ -1,3 +1,4 @@
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 <%--
   Created by IntelliJ IDEA.
   User: Кинетик
@@ -11,6 +12,14 @@
     <title>Страница администратора</title>
 </head>
 <body>
-
+<h1>Страница админа</h1>
+<form:form method="post" modelAttribute="adminLogin" action="checkAdmin">
+    <form:select path="name" type="text" value="" placeholder="Логин" id="adminName">
+        <form:options items="${adminList}"/>
+    </form:select><br/>
+    <form:input path="password" type="password" value="" placeholder="Пароль" id="password"/><br/>
+    ${message}<br/>
+    <form:button>Войти</form:button>
+</form:form>
 </body>
 </html>

+ 10 - 0
web/WEB-INF/views/ownerBar.jsp

@@ -1,3 +1,4 @@
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 <%--
   Created by IntelliJ IDEA.
   User: Кинетик
@@ -11,6 +12,15 @@
     <title>Страница заказчика</title>
 </head>
 <body>
+<h1>Страница заказчика</h1>
+<form:form method="post" modelAttribute="clientLogin" action="checkClient">
+    <form:select path="name" type="text" value="" placeholder="Логин" id="clientName">
+        <form:options items="${clientList}"/>
+    </form:select><br/>
+    <form:input path="password" type="password" value="" placeholder="Пароль" id="password"/><br/>
+    ${message}<br/>
+    <form:button>Войти</form:button>
+</form:form>
 
 </body>
 </html>

+ 16 - 0
web/WEB-INF/views/ownerIn.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Кинетик
+  Date: 31.12.2016
+  Time: 22:37
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Страница внутри</title>
+</head>
+<body>
+    <h1>Заказчик внутри, как дальше пока хз</h1>
+</body>
+</html>