diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 3e7fe9b..6e4278b 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,23 +1,29 @@ - + - - - - - - - - - + + + + + + + + + + + - - - - + + + + + + + + @@ -25,17 +31,21 @@ - - - + + + + + + + + + - - @@ -50,9 +60,9 @@ - + @@ -68,43 +78,53 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -112,17 +132,38 @@ - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + @@ -132,60 +173,85 @@ responsive-img + e + + + + @@ -202,9 +268,9 @@ - @@ -231,6 +297,13 @@ + + + + + + + @@ -238,6 +311,20 @@ + + + + + + + + + + + + + + @@ -249,6 +336,18 @@ + + + + + + + + + + + + @@ -262,6 +361,22 @@ + + + + + + + + + + + + + + + + @@ -270,6 +385,14 @@ + + + + + + + + @@ -278,32 +401,14 @@ - - - @@ -368,12 +473,36 @@ + + + + @@ -383,11 +512,14 @@ + + + + + + + - - - - @@ -474,7 +606,16 @@ - + + + + + + + + + + 1528408256446 @@ -595,14 +736,56 @@ - - - + @@ -622,19 +805,19 @@ - + - + + - @@ -649,6 +832,7 @@ - - - file://$PROJECT_DIR$/src/model/User.java - 68 - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + - - + + + + + - - + + - + - - + + - - - - - - - - - - + + + - + - - - - - + + - + - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + - - - - - + + - + - - + + + + + + + + + - - - - - - - - - - - - - - - - + + - + + - + - - + + - - - + + + + + + + - - - - - - - - - + + - + + + - + - - - - - - - - - + + - - + - + - - + + + + + + + + + - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + + + + + + + + + + + + + + + + + + diff --git a/src/controller/access/AccessControllerAdd.java b/src/controller/access/AccessControllerAdd.java index 793a7cf..ed938d5 100644 --- a/src/controller/access/AccessControllerAdd.java +++ b/src/controller/access/AccessControllerAdd.java @@ -25,16 +25,7 @@ public class AccessControllerAdd extends HttpServlet { @SuppressWarnings("unchecked") public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PersistenceManager pm = PMF.get().getPersistenceManager(); - /*Role r = new Role("mesero"); - Resource re = new Resource("/comida"); - try { - pm.makePersistent(r); - pm.makePersistent(re); - } finally { - pm.close(); - }*/ - System.out.print(request.getParameter("info")); String query = "select from " + Role.class.getName(); String query2 = "select from " + Resource.class.getName(); @@ -85,7 +76,7 @@ public class AccessControllerAdd extends HttpServlet { Access a = new Access(idRole, idResource,true); //persist the entity pm.makePersistent(a); - + request.getSession().setAttribute("serverResponse","Access created successfully."); } } else if (request.getParameter("info").equals("check")){ @@ -96,8 +87,10 @@ public class AccessControllerAdd extends HttpServlet { pm.close(); try{ - if (redirect) + if (redirect){ + request.setAttribute("serverResponse",""); response.sendRedirect("/access"); + } } //Al redirigr al jsp para crear, se usa RequestDispatcher, y este entra en conflicto con sendRedirect. catch (IllegalStateException e){ @@ -113,7 +106,6 @@ public class AccessControllerAdd extends HttpServlet { @SuppressWarnings("unchecked") private boolean accessExist(String role, String resource){ - System.out.println("\nCheking..."); PersistenceManager pm = PMF.get().getPersistenceManager(); List accessList = (List) pm.newQuery("select from " + Access.class.getName()).execute(); @@ -122,17 +114,14 @@ public class AccessControllerAdd extends HttpServlet { String roleKey = RolesControllerView.getRole(role).getKey(); String resourceKey = ResourcesControllerView.getResource(resource).getKey(); for (Access access: accessList){ - if (access.getIdRole().equals(roleKey)){ - if (access.getIdResource().equals(resourceKey)){ - System.out.println("Hey! That Access already Exists!! v:<"); + if (access.getRoleKey().equals(roleKey)){ + if (access.getResourceKey().equals(resourceKey)){ return true; } } } - System.out.println("nope :p"); return false; } catch (IllegalArgumentException e){ - System.out.println("A parameter is illegal... Maybe the AJAX call is incomplete?"); return true; } diff --git a/src/controller/access/AccessControllerDelete.java b/src/controller/access/AccessControllerDelete.java index 788ea01..a089920 100644 --- a/src/controller/access/AccessControllerDelete.java +++ b/src/controller/access/AccessControllerDelete.java @@ -19,15 +19,20 @@ public class AccessControllerDelete extends HttpServlet { PersistenceManager pm = PMF.get().getPersistenceManager(); // create the new account try{ - Key k = KeyFactory.createKey(Access.class.getSimpleName(), new Long(request.getParameter("accessId")).longValue()); - Access r = pm.getObjectById(Access.class, k); - pm.deletePersistent(r); - response.sendRedirect("/access"); + Key k = KeyFactory.createKey(Access.class.getSimpleName(), new Long(request.getParameter("accessId"))); + Access r = pm.getObjectById(Access.class, k); + + pm.deletePersistent(r); + + request.getSession().setAttribute("serverResponse","Access deleted successfully."); + response.sendRedirect("/access"); } catch(javax.jdo.JDOObjectNotFoundException nf) { response.sendRedirect("/access"); } } + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } + } \ No newline at end of file diff --git a/src/controller/access/AccessControllerEdit.java b/src/controller/access/AccessControllerEdit.java index 91ca5b6..3d7ad36 100644 --- a/src/controller/access/AccessControllerEdit.java +++ b/src/controller/access/AccessControllerEdit.java @@ -3,6 +3,7 @@ package controller.access; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.KeyFactory; import controller.PMF; +import controller.users.UsersControllerView; import model.Access; import model.Resource; import model.Role; @@ -15,51 +16,78 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; + @SuppressWarnings("serial") public class AccessControllerEdit extends HttpServlet { + + @SuppressWarnings("unchecked") public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // create the persistence manager instance PersistenceManager pm = PMF.get().getPersistenceManager(); try{ - System.out.print(request.getParameter("info")); + Key k = KeyFactory.createKey(Access.class.getSimpleName(), new Long(request.getParameter("id"))); + Access a = pm.getObjectById(Access.class, k); + request.setAttribute("access", a); + String query = "select from " + Role.class.getName(); String query2 = "select from " + Resource.class.getName(); + List roles = (List)pm.newQuery(query).execute(); List resources = (List)pm.newQuery(query2).execute(); + request.setAttribute("roles", roles); request.setAttribute("resources", resources); - RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Access/edit.jsp"); - dispatcher.forward(request, response); try{ if(request.getParameter("info").equals("editar")){ - String idRole=request.getParameter("rolesl"); - String idResource=request.getParameter("resourcesl"); - if(idRole == null || idRole.equals("")|| idResource == null || idResource.equals("")){System.out.print("nombre vacio");} - else{ - if(!a.getIdRole().equals(idRole)){ - a.setIdRole(idRole); - } + String idRole = request.getParameter("rolesl"); + String idResource = request.getParameter("resourcesl"); - if(!a.getIdResource().equals(idResource)){ - a.setIdResource(idResource); - } + if(idRole == null || idRole.equals("")|| idResource == null || idResource.equals("")){ + + System.out.print("nombre vacio"); } - } + else{ + + if(!a.getRoleKey().equals(idRole)){ + a.setRoleKey(idRole); + } + + if(!a.getResourceKey().equals(idResource)){ + a.setResourceKey(idResource); + } + + request.getSession().setAttribute("serverResponse","Access updated successfully."); + + response.sendRedirect("/access"); + + } + } else if(request.getParameter("info").equals("redirect")){ + + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Access/edit.jsp"); + request.setAttribute("User",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); + dispatcher.forward(request, response); + } + }catch (java.lang.NullPointerException np){ - + System.err.println("AccessControllerEdit Exception -> NPE:"); + np.printStackTrace(); } - }catch(javax.jdo.JDOObjectNotFoundException nf) { - response.sendRedirect("/index.html"); - } + } catch(javax.jdo.JDOObjectNotFoundException nf) { + response.sendRedirect("/index.html"); + } catch (NumberFormatException e){ + response.sendRedirect("/users"); + } } + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } + } \ No newline at end of file diff --git a/src/controller/access/AccessControllerIndex.java b/src/controller/access/AccessControllerIndex.java index 6ee3cb7..36a4313 100644 --- a/src/controller/access/AccessControllerIndex.java +++ b/src/controller/access/AccessControllerIndex.java @@ -42,12 +42,15 @@ public class AccessControllerIndex extends HttpServlet { // pass the list to the jsp request.setAttribute("accesses", accesses); + request.setAttribute("serverResponse",sesion.getAttribute("serverResponse")); + sesion.setAttribute("serverResponse","!"); + // forward the request to the jsp RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Access/index.jsp"); dispatcher.forward(request, response); } - //Si no la encuentra, redirige a la pagina inicial. + //Si no la encuentra, redirige a la pagina inicial para que se cree la sesion. catch (Exception e){ e.printStackTrace(); response.getWriter().println(""); diff --git a/src/controller/access/AccessControllerView.java b/src/controller/access/AccessControllerView.java index c1817b9..982b83b 100644 --- a/src/controller/access/AccessControllerView.java +++ b/src/controller/access/AccessControllerView.java @@ -3,9 +3,13 @@ package controller.access; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.KeyFactory; import controller.PMF; +import controller.resources.ResourcesControllerView; +import controller.roles.RolesControllerView; +import controller.users.UsersControllerView; import model.Access; import model.Resource; import model.Role; +import model.User; import javax.jdo.PersistenceManager; import javax.servlet.RequestDispatcher; @@ -14,6 +18,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; @SuppressWarnings("serial") public class AccessControllerView extends HttpServlet { @@ -21,39 +26,91 @@ public class AccessControllerView extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // create the persistence manager instance PersistenceManager pm = PMF.get().getPersistenceManager(); - try{ - System.out.print(request.getParameter("info")); + try{ Key k = KeyFactory.createKey(Access.class.getSimpleName(), new Long(request.getParameter("id"))); Access a = pm.getObjectById(Access.class, k); request.setAttribute("access", a); - Key krol = KeyFactory.createKey(Role.class.getSimpleName(), a.getIdRole()); - Role rol = pm.getObjectById(Role.class, krol); + Role rol = RolesControllerView.getRole(a.getRoleKey()); String nrol = rol.getName(); - Key kres = KeyFactory.createKey(Resource.class.getSimpleName(), a.getIdResource()); - Resource res = pm.getObjectById(Resource.class, kres); + Resource res = ResourcesControllerView.getResource(a.getResourceKey()); String nres = res.getUrl(); - System.out.print(nres); - - request.setAttribute("role", nrol); - request.setAttribute("resource", nres); + request.setAttribute("User",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Access/view.jsp"); dispatcher.forward(request, response); }catch(javax.jdo.JDOObjectNotFoundException nf) { - response.sendRedirect("/access"); - } + System.err.println("JDOObjectNotFound -> AccessControllerView"); + nf.printStackTrace(); + request.getSession().setAttribute("serverResponse","Error trying to view the Access."); + response.sendRedirect("/access"); + + } catch (NullPointerException e){ + System.err.println("NPE -> Trying to access a servlet without logging in."); + response.sendRedirect("/users"); + } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } + @SuppressWarnings("unchecked") + private static List getAllAccess(){ + PersistenceManager pm = PMF.get().getPersistenceManager(); + List accessList = (List) pm.newQuery("select from " + Access.class.getName()).execute(); + pm.close(); + return accessList; + } + + /** + * Metodo estatico checkPermission. + * + * Al llamarlo, revisa si un usuario tiene acceso a una URI, devuelve true si es cierto, false si no. + * Se debe colocar como primer condicional del Servlet: + * + * public doGet/doPost ()~~~~{ + * if (checkPermission(userID,uri){ + * //El usuario tiene permiso, realizar las acciones necesarias + * } else { + * //El usuario no tiene permiso, mostrar mensaje de error. + * } + * } + * + * Los usuarion con rol admin tienen acceso completo por defecto. + * + * @param userID El id del usuario que ha iniciado sesion. Ver UsersControllerAdd + * @param uri El URI al que se intenta acceder. request.getRequestURI() + * + * */ + public static boolean checkPermission(String userID, String uri){ + + User user = (User) UsersControllerView.getUser(userID); + String userRoleName = user.getRoleName(); + String userRoleKey = user.getRoleKey(); + if (userRoleKey == null) + userRoleKey = ""; + + for (Access access: getAllAccess()){ + if (userRoleName.equals("admin")){ + return true; + } else if (access.getRoleKey().equals(userRoleKey)){ + System.out.println("Encontrado USuario con Rol coincidente"); + if (access.getResourceName().equals(uri)){ + System.out.println("El USuario tiene acceso a esta URI"); + return true; + } + } + } + + return false; + } + } \ No newline at end of file diff --git a/src/controller/resources/ResourcesControllerAdd.java b/src/controller/resources/ResourcesControllerAdd.java index 8d7db76..ed39a7d 100644 --- a/src/controller/resources/ResourcesControllerAdd.java +++ b/src/controller/resources/ResourcesControllerAdd.java @@ -35,7 +35,7 @@ public class ResourcesControllerAdd extends HttpServlet { Boolean status = Boolean.parseBoolean(request.getParameter("status")); createRole(url,status,pm); - + request.getSession().setAttribute("serverResponse","Resource created successfully."); break; case "redirect": @@ -53,6 +53,8 @@ public class ResourcesControllerAdd extends HttpServlet { resourc.setUrl(request.getParameter("url")); resourc.setStatus(Boolean.parseBoolean(request.getParameter("status"))); + + request.getSession().setAttribute("serverResponse","Resource updated successfully."); break; } diff --git a/src/controller/resources/ResourcesControllerDelete.java b/src/controller/resources/ResourcesControllerDelete.java index 74750c1..3462e8c 100644 --- a/src/controller/resources/ResourcesControllerDelete.java +++ b/src/controller/resources/ResourcesControllerDelete.java @@ -25,6 +25,7 @@ public class ResourcesControllerDelete extends HttpServlet { Key key = KeyFactory.stringToKey(request.getParameter("key")); try{ pm.deletePersistent(pm.getObjectById(Resource.class, key)); + request.getSession().setAttribute("serverResponse","Resource deleted successfully."); } catch (JDOObjectNotFoundException e){ System.err.println("Exception catched -> " + e.getMessage()); } diff --git a/src/controller/resources/ResourcesControllerIndex.java b/src/controller/resources/ResourcesControllerIndex.java index 57ed8a9..945f76e 100644 --- a/src/controller/resources/ResourcesControllerIndex.java +++ b/src/controller/resources/ResourcesControllerIndex.java @@ -27,6 +27,8 @@ public class ResourcesControllerIndex extends HttpServlet { request.setAttribute("User",user); request.setAttribute("ResourceList",ResourcesControllerView.getAllResources()); + request.setAttribute("serverResponse",sesion.getAttribute("serverResponse")); + sesion.setAttribute("serverResponse","!"); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Resources/index.jsp"); dispatcher.forward(request,response); diff --git a/src/controller/roles/RolesControllerAdd.java b/src/controller/roles/RolesControllerAdd.java index 6a48ba6..91f77b5 100644 --- a/src/controller/roles/RolesControllerAdd.java +++ b/src/controller/roles/RolesControllerAdd.java @@ -47,6 +47,7 @@ public class RolesControllerAdd extends HttpServlet { Boolean status = Boolean.parseBoolean(request.getParameter("roleStatus")); createRole(name,status,pm); + request.getSession().setAttribute("serverResponse","Role created successfully."); break; @@ -66,7 +67,7 @@ public class RolesControllerAdd extends HttpServlet { role1.setName(request.getParameter("roleName")); role1.setStatus(Boolean.parseBoolean(request.getParameter("roleStatus"))); //role1.setImgUrl(userImg); - + request.getSession().setAttribute("serverResponse","Role updated successfully."); break; diff --git a/src/controller/roles/RolesControllerDelete.java b/src/controller/roles/RolesControllerDelete.java index 395c84a..0257e85 100644 --- a/src/controller/roles/RolesControllerDelete.java +++ b/src/controller/roles/RolesControllerDelete.java @@ -22,6 +22,7 @@ public class RolesControllerDelete extends HttpServlet { Key k = KeyFactory.stringToKey(request.getParameter("key")); try{ pm.deletePersistent(pm.getObjectById(Role.class, k)); + request.getSession().setAttribute("serverResponse","Role deleted successfully."); } catch (JDOObjectNotFoundException e){ System.err.println("Exception catched -> " + e.getMessage()); } diff --git a/src/controller/roles/RolesControllerIndex.java b/src/controller/roles/RolesControllerIndex.java index d4d17cf..c3f0737 100644 --- a/src/controller/roles/RolesControllerIndex.java +++ b/src/controller/roles/RolesControllerIndex.java @@ -26,6 +26,8 @@ public class RolesControllerIndex extends HttpServlet { request.setAttribute("User",user); request.setAttribute("RoleList",RolesControllerView.getAllRoles()); + request.setAttribute("serverResponse",sesion.getAttribute("serverResponse")); + sesion.setAttribute("serverResponse","!"); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Roles/index.jsp"); dispatcher.forward(request,response); diff --git a/src/controller/roles/RolesControllerView.java b/src/controller/roles/RolesControllerView.java index 384145e..403e891 100644 --- a/src/controller/roles/RolesControllerView.java +++ b/src/controller/roles/RolesControllerView.java @@ -25,7 +25,7 @@ import java.util.List; * public static getAllRoles() * Devuelve un List con todos los roles que existen. * - * public static getRole(String key) + * public static getRoleKey(String key) * Devuelve un Rol dada una key. * La key se obtiene usando el metodo getKey() de un objeto Role * diff --git a/src/controller/services/ServicesControllerAdd.java b/src/controller/services/ServicesControllerAdd.java new file mode 100644 index 0000000..f5cf63b --- /dev/null +++ b/src/controller/services/ServicesControllerAdd.java @@ -0,0 +1,103 @@ +package controller.services; + +import java.io.IOException; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + + +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import controller.PMF; +import controller.access.AccessControllerView; +import controller.roles.RolesControllerView; +import controller.users.UsersControllerView; +import model.Access; +import model.Service; + +@SuppressWarnings("serial") +public class ServicesControllerAdd extends HttpServlet { + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ + + try{ + + if (AccessControllerView.checkPermission(request.getSession().getAttribute("userID").toString(),request.getRequestURI())){ + PersistenceManager pm = PMF.get().getPersistenceManager(); + + System.out.println("Request URI Add->" + request.getRequestURI()); + + String action = request.getParameter("action"); + + if (action == null) + action = ""; + + if (action.equals("create")){ + + String name = request.getParameter("Name"); + Double price = Double.parseDouble(request.getParameter("Price")); + String description = request.getParameter("Description"); + String userCreatorKey = request.getParameter("userId"); + + Service service = new Service (name, price, description,userCreatorKey); + + request.getSession().setAttribute("serverResponse","Service created successfully."); + + pm.makePersistent(service); + + + } else if (action.equals("update")){ + + Key k = KeyFactory.stringToKey(request.getParameter("key")); + + Service service = pm.getObjectById(Service.class,k); + + service.setName(request.getParameter("Name")); + service.setPrice(Double.parseDouble(request.getParameter("Price"))); + service.setDescription(request.getParameter("Description")); + + pm.close(); + + request.getSession().setAttribute("serverResponse","Service updated successfully."); + + } else if (action.equals("redirect")){ + + HttpSession sesion= request.getSession(); + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Services/add.jsp"); + request.setAttribute("User",UsersControllerView.getUser(sesion.getAttribute("userID").toString())); + dispatcher.forward(request, response); + + } + + pm.close(); + try{ + response.sendRedirect("/services"); + } + //Al redirigr al jsp para crear, se usa RequestDispatcher, y este entra en conflicto con sendRedirect. + catch (IllegalStateException e){ + System.err.println("IllegalStateException: There was a double redirect."); + } + + } else { + + request.getSession().setAttribute("serverResponse","You do not have the rights to access."); + response.sendRedirect("/users"); + + } + + } catch (NullPointerException e){ + response.sendRedirect("/users"); + } + + + } + + public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ + doGet(request, response); + } +} diff --git a/src/controller/services/ServicesControllerDelete.java b/src/controller/services/ServicesControllerDelete.java new file mode 100644 index 0000000..27c1375 --- /dev/null +++ b/src/controller/services/ServicesControllerDelete.java @@ -0,0 +1,61 @@ +package controller.services; + +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import controller.PMF; +import controller.access.AccessControllerView; +import model.Service; + +import javax.jdo.JDOObjectNotFoundException; +import javax.jdo.PersistenceManager; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +@SuppressWarnings("serial") +public class ServicesControllerDelete extends HttpServlet { + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + + try{ + + if (AccessControllerView.checkPermission(request.getSession().getAttribute("userID").toString(),request.getRequestURI())){ + + PersistenceManager pm = PMF.get().getPersistenceManager(); + + String serviceKey = request.getParameter("serviceKey"); + + try{ + Key k = KeyFactory.stringToKey(serviceKey); + Service service = pm.getObjectById(Service.class, k); + + pm.deletePersistent(service); + + request.getSession().setAttribute("serverResponse","Service deleted successfully."); + } catch (JDOObjectNotFoundException e){ + System.err.println("Exception catched -> " + e.getMessage()); + } + + pm.close(); + + response.sendRedirect("/services"); + + } else { + request.getSession().setAttribute("serverResponse","You do not have the rights to access."); + response.sendRedirect("/users"); + } + + + } catch (NullPointerException e){ + response.sendRedirect("/users"); + } + + + } + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{ + doGet(request, response); + } + +} \ No newline at end of file diff --git a/src/controller/services/ServicesControllerIndex.java b/src/controller/services/ServicesControllerIndex.java new file mode 100644 index 0000000..505dbaf --- /dev/null +++ b/src/controller/services/ServicesControllerIndex.java @@ -0,0 +1,63 @@ +package controller.services; + +import controller.access.AccessControllerView; +import controller.users.UsersControllerView; +import model.User; + +import javax.servlet.RequestDispatcher; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +import static controller.services.ServicesControllerView.getAllServices; + +public class ServicesControllerIndex extends HttpServlet { + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + + try{ + + if (AccessControllerView.checkPermission(request.getSession().getAttribute("userID").toString(),request.getRequestURI())){ + + //Se usa para revisar si hay una sesion activa + HttpSession sesion= request.getSession(); + + //Intenta hallar una sesion activa + try{ + User user = UsersControllerView.getUser(sesion.getAttribute("userID").toString()); + if (user == null) throw new NullPointerException("UsersControllerIndex: El usuario recibido es nulo."); + + request.setAttribute("User",user); + request.setAttribute("ServicesList",getAllServices()); + request.setAttribute("serverResponse",sesion.getAttribute("serverResponse")); + sesion.setAttribute("serverResponse","!"); + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Services/index.jsp"); + dispatcher.forward(request,response); + + } + //Si no la encuentra, redirige a la pagina inicial. + catch (Exception e){ + System.err.println("UserControllerIndex: Error catched. " + e.getMessage()); + response.getWriter().println(""); + } + + } else { + request.getSession().setAttribute("serverResponse","You do not have the rights to access."); + response.sendRedirect("/users"); + } + + } catch (NullPointerException e){ + response.sendRedirect("/users"); + } + + + } + + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + doPost(req, resp); + } + + +} diff --git a/src/controller/services/ServicesControllerView.java b/src/controller/services/ServicesControllerView.java new file mode 100644 index 0000000..26f389a --- /dev/null +++ b/src/controller/services/ServicesControllerView.java @@ -0,0 +1,108 @@ +package controller.services; + +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import controller.PMF; +import controller.access.AccessControllerView; +import controller.users.UsersControllerView; +import model.Service; + +import javax.jdo.JDOObjectNotFoundException; +import javax.jdo.PersistenceManager; +import javax.servlet.RequestDispatcher; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +@SuppressWarnings("serial") +public class ServicesControllerView extends HttpServlet { + + @SuppressWarnings("unchecked") + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + + try{ + + if (AccessControllerView.checkPermission(request.getSession().getAttribute("userID").toString(),request.getRequestURI())){ + + String action = request.getParameter("action"); + + if (action == null) + action = ""; + + PersistenceManager pm = PMF.get().getPersistenceManager(); + + if (action.equals("editRedirect")) { + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Services/view.jsp"); + + request.setAttribute("User",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); + request.setAttribute("Service",getService(request.getParameter("serviceKey"))); + + request.setAttribute("editAllowed",true); + request.setAttribute("action","Edit"); + + try{ + dispatcher.forward(request,response); + } catch (javax.servlet.ServletException e){ + e.printStackTrace(); + } + + } + else if (action.equals("viewRedirect")) { + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Services/view.jsp"); + + request.setAttribute("User",UsersControllerView.getUser(request.getSession().getAttribute("userID").toString())); + request.setAttribute("Service",getService(request.getParameter("serviceKey"))); + + request.setAttribute("editAllowed",false); + request.setAttribute("action","View"); + + try{ + dispatcher.forward(request,response); + } catch (javax.servlet.ServletException e){ + e.printStackTrace(); + } + + } + //Si no se encontró acción, regresa al inicio + else { + response.getWriter().println(""); + } + + pm.close(); + + } else { + request.getSession().setAttribute("serverResponse","You do not have the rights to access."); + response.sendRedirect("/users"); + } + + } catch (NullPointerException e){ + response.sendRedirect("/users"); + } + + } + + public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + doGet(req, resp); + } + + @SuppressWarnings("unchecked") + static List getAllServices(){ + PersistenceManager pm = controller.PMF.get().getPersistenceManager(); + List services = (List) pm.newQuery("select from " + Service.class.getName()).execute(); + pm.close(); + return services; + } + + private static Service getService(String key){ + PersistenceManager pm = PMF.get().getPersistenceManager(); + + Key k = KeyFactory.stringToKey(key); + Service service = pm.getObjectById(Service.class,k); + + pm.close(); + return service; + } + +} \ No newline at end of file diff --git a/src/controller/users/UsersControllerAdd.java b/src/controller/users/UsersControllerAdd.java index 224be82..f85f676 100644 --- a/src/controller/users/UsersControllerAdd.java +++ b/src/controller/users/UsersControllerAdd.java @@ -1,9 +1,7 @@ package controller.users; -import controller.resources.ResourcesControllerView; import controller.roles.RolesControllerAdd; import controller.roles.RolesControllerView; -import model.Resource; import model.Role; import model.User; @@ -28,6 +26,9 @@ public class UsersControllerAdd extends HttpServlet { //Accion a realizar String action = request.getParameter("action"); + //Respuesta del servidor + String serverResponse = "!"; + if (action == null) action = ""; @@ -71,6 +72,8 @@ public class UsersControllerAdd extends HttpServlet { //Si no existe la sesion, la crea usando el ID del usuario if (!sesionExist(misesion)) { + misesion.invalidate(); + misesion = request.getSession(true); misesion.setAttribute("userID", userID); @@ -78,6 +81,8 @@ public class UsersControllerAdd extends HttpServlet { misesion.setMaxInactiveInterval(3600); } + serverResponse = "You are logged-in"; + break; //Si lo que se quiere es redirigir al Form para crear usuario @@ -92,6 +97,7 @@ public class UsersControllerAdd extends HttpServlet { //Si lo que se quiere es Crear (proviene del formulario) case "create": createUser(userID, userEmail, userName, userImg, userRole, pm); + serverResponse = "User created successfully."; break; //Si lo que se quiere es actualizar un Usuario @@ -102,14 +108,16 @@ public class UsersControllerAdd extends HttpServlet { user.setName(userName); user.setEmail(userEmail); user.setImgUrl(userImg); - user.setRole(userRole); + user.setRoleKey(userRole); + serverResponse = "User Updated successfully."; break; } pm.close(); try{ + request.getSession().setAttribute("serverResponse",serverResponse); response.sendRedirect("/users"); } //Al redirigr al jsp para crear, se usa RequestDispatcher, y este entra en conflicto con sendRedirect. diff --git a/src/controller/users/UsersControllerDelete.java b/src/controller/users/UsersControllerDelete.java index d7ba61b..abf0816 100644 --- a/src/controller/users/UsersControllerDelete.java +++ b/src/controller/users/UsersControllerDelete.java @@ -20,10 +20,13 @@ public class UsersControllerDelete extends HttpServlet { try{ pm.deletePersistent(pm.getObjectById(User.class, userID)); + request.getSession().setAttribute("serverResponse","User deleted successfully."); } catch (JDOObjectNotFoundException e){ System.err.println("Exception catched -> " + e.getMessage()); } + pm.close(); + response.sendRedirect("/users"); } diff --git a/src/controller/users/UsersControllerIndex.java b/src/controller/users/UsersControllerIndex.java index 8a52d23..9c369e7 100644 --- a/src/controller/users/UsersControllerIndex.java +++ b/src/controller/users/UsersControllerIndex.java @@ -22,11 +22,13 @@ public class UsersControllerIndex extends HttpServlet { //Intenta hallar una sesion activa try{ - User usario = UsersControllerView.getUser(sesion.getAttribute("userID").toString()); - if (usario == null) throw new NullPointerException("UsersControllerIndex: El usuario recibido es nulo."); + User user = UsersControllerView.getUser(sesion.getAttribute("userID").toString()); + if (user == null) throw new NullPointerException("UsersControllerIndex: El usuario recibido es nulo."); - request.setAttribute("User",usario); + request.setAttribute("User",user); request.setAttribute("UsersList",UsersControllerView.getAllUsers()); + request.setAttribute("serverResponse",sesion.getAttribute("serverResponse")); + sesion.setAttribute("serverResponse","!"); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Users/index.jsp"); dispatcher.forward(request,response); diff --git a/src/model/Access.java b/src/model/Access.java index 1fa9adf..5e6514b 100644 --- a/src/model/Access.java +++ b/src/model/Access.java @@ -2,7 +2,6 @@ package model; import controller.resources.ResourcesControllerView; import controller.roles.RolesControllerView; -import org.datanucleus.exceptions.NucleusObjectNotFoundException; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; @@ -18,17 +17,17 @@ public class Access { private Long id; @Persistent - private String idRole; + private String roleKey; @Persistent - private String idResource; + private String resourceKey; @Persistent private boolean status; public Access(String idRole, String idResource, boolean status) { - this.idRole = idRole; - this.idResource = idResource; + this.roleKey = idRole; + this.resourceKey = idResource; this.status = status; } @@ -36,18 +35,18 @@ public class Access { return id; } - public String getIdRole() { - return idRole; + public String getRoleKey() { + return roleKey; } - public void setIdRole(String idRole) { - this.idRole = idRole; + public void setRoleKey(String roleKey) { + this.roleKey = roleKey; } - public String getIdResource() { - return idResource; + public String getResourceKey() { + return resourceKey; } - public void setIdResource(String idResource) { - this.idResource = idResource; + public void setResourceKey(String resourceKey) { + this.resourceKey = resourceKey; } public boolean getStatus() { @@ -60,9 +59,9 @@ public class Access { public String getRoleName(){ String ret; try { - ret = RolesControllerView.getRole(idRole).getName(); + ret = RolesControllerView.getRole(roleKey).getName(); } catch (Exception e){ - ret = "The Role doesn´t exists."; + ret = "The Role doesn't exists."; } return ret; } @@ -70,11 +69,19 @@ public class Access { public String getResourceName(){ String ret; try { - ret = ResourcesControllerView.getResource(idResource).getUrl(); + ret = ResourcesControllerView.getResource(resourceKey).getUrl(); }catch (Exception e){ - ret = "The Resource doesn´t exists."; + ret = "The Resource doesn't exists."; } return ret; } + @Override + public String toString() { + return "[ ID: " + id +"\n" + + "roleKey: " + roleKey + "\n" + + "resourceKey: " + resourceKey + "\n" + + "status: " + status +"\n" + + "]"; + } } \ No newline at end of file diff --git a/src/model/Service.java b/src/model/Service.java new file mode 100644 index 0000000..63918a0 --- /dev/null +++ b/src/model/Service.java @@ -0,0 +1,80 @@ +package model; + +import javax.jdo.annotations.*; +import com.google.appengine.api.datastore.Key; +import com.google.appengine.api.datastore.KeyFactory; +import controller.users.UsersControllerView; + +@PersistenceCapable(identityType=IdentityType.APPLICATION) +public class Service { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) + private Key key; + + @Persistent + private String name; + + @Persistent + private double price; + + @Persistent + private String description; + + @Persistent + private String creatorUserId; + + public Service(String name, double price, String description, String creatorUserKey) { + this.name = name; + this.price = price; + this.description = description; + this.creatorUserId = creatorUserKey; + } + + + /*Getters and Setters*/ + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + public void setPrice(double price) { + this.price = price; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public String getKey() { + return KeyFactory.keyToString(key); + } + + public String getCreatorUserId(){ + return creatorUserId; + } + + public String getCreatorUserName(){ + String name; + try{ + name = UsersControllerView.getUser(creatorUserId).getName(); + } catch (Exception e){ + name = "The User doesn't exists."; + } + return name; + } + + /*To String*/ + public String toString(){ + return "Name: " + name + "\n Price: " + price + "\n Description: " + description + ".\n"; + } + +} diff --git a/src/model/User.java b/src/model/User.java index 824394d..4275434 100644 --- a/src/model/User.java +++ b/src/model/User.java @@ -30,7 +30,7 @@ public class User { //Rol del Usuario -> Lo que se almacena no es un objeto Role, sino la llave (key) de ese objeto. @Persistent - private String role; + private String roleKey; //Constructor public User(String id, String name, String imgUrl, String email ,String role){ @@ -38,7 +38,7 @@ public class User { this.name = name; this.imgUrl = imgUrl; this.email = email; - this.role = role; + this.roleKey = role; } @@ -68,26 +68,26 @@ public class User { this.email = email; } - public String getRole() { - return role; + public String getRoleKey() { + return roleKey; } public String getRoleName() { String roleName; try{ - roleName = RolesControllerView.getRole(role).getName(); + roleName = RolesControllerView.getRole(roleKey).getName(); } catch (Exception e){ - roleName = "The Role of this User does not exists."; + roleName = "The Role doesn't exists."; } return roleName; } - public void setRole(String role) { - this.role = role; + public void setRoleKey(String roleKey) { + this.roleKey = roleKey; } //To String @Override public String toString() { - return "User name: " + name + "\nUser role: " + role + "\n"; + return "User name: " + name + "\nUser roleKey: " + roleKey + "\n"; } } diff --git a/war/WEB-INF/View/Access/add.jsp b/war/WEB-INF/View/Access/add.jsp index 4a88a43..cb2e9f6 100644 --- a/war/WEB-INF/View/Access/add.jsp +++ b/war/WEB-INF/View/Access/add.jsp @@ -20,34 +20,12 @@ + - + @@ -55,18 +33,22 @@ @@ -91,6 +96,19 @@

+ +
+
+ info_outline +
+
+ The admin Role has full access by default.
+
+
+
+
+
+ @@ -103,8 +121,7 @@ <% if(roles.size() > 0) {%> - - <% for (Resource res: resourses) { %> - - <% } %> + + + <% for (Resource res: resourses) { %> + + <% } %> <% } else { %> @@ -166,24 +184,6 @@ isUserOptionsEnable = !isUserOptionsEnable; } - function postRedirect(url, postData){ - var postForm = document.createElement("form"); - postForm.action = url; - postForm.method = "POST"; - postForm.style.display = "none"; - for (var key in postData){ - if (postData.hasOwnProperty(key)){ - var input = document.createElement("input"); - input.type = "hidden"; - input.name = key; - input.value = postData[key]; - postForm.appendChild(input); - } - } - document.body.appendChild(postForm); - postForm.submit(); - } - if (buttonDisabled) document.getElementById("sendButton").disabled = "disabled"; @@ -191,7 +191,7 @@ function accessExists() { - var role = document.forms["mainForm"]["formRole"].value; + var roleKey = document.forms["mainForm"]["formRole"].value; var resource = document.forms["mainForm"]["formResource"].value; var req = new XMLHttpRequest(); @@ -199,7 +199,6 @@ req.onreadystatechange = function () { if (req.readyState === 4 && req.status === 200){ - console.log("Response -> " + req.responseText); if (req.responseText === "true") { safeToSend = false; } @@ -210,7 +209,7 @@ }; - req.open("get", "/access/add?info=check&rolesl=" + role + "&resourcesl=" + resource); + req.open("get", "/access/add?info=check&rolesl=" + roleKey + "&resourcesl=" + resource); req.send(); } diff --git a/war/WEB-INF/View/Access/edit.jsp b/war/WEB-INF/View/Access/edit.jsp index c9fee8f..3b5bee3 100644 --- a/war/WEB-INF/View/Access/edit.jsp +++ b/war/WEB-INF/View/Access/edit.jsp @@ -4,42 +4,177 @@ <%@ page import="java.util.List"%> <% List roles = (List)request.getAttribute("roles"); - List resourses = (List)request.getAttribute("resources"); - Access a = (Access)request.getAttribute("access"); + List resources = (List)request.getAttribute("resources"); + User user = (User) request.getAttribute("User"); + Access a = (Access) request.getAttribute("access"); %> - -Insert title here + + + Edit an Access - Hotel Services + + + + + + + + + + + + + -Back

-

- - - - - -
+ + +
+
+ Edit an Access +
+
+ +
+ + + + + + New Role: + +
+ + New Resource: +
+ + + +
+ +
+ + + \ No newline at end of file diff --git a/war/WEB-INF/View/Access/index.jsp b/war/WEB-INF/View/Access/index.jsp index 78d060f..0479a6a 100644 --- a/war/WEB-INF/View/Access/index.jsp +++ b/war/WEB-INF/View/Access/index.jsp @@ -4,8 +4,10 @@ <%@ page import="model.*"%> <% List accesses = (List)request.getAttribute("accesses"); + User usuario = (User) request.getAttribute("User"); + String serverResponse = (String) request.getAttribute("serverResponse"); + if (serverResponse == null) serverResponse = "!"; %> -<% User usuario = (User) request.getAttribute("User"); %> @@ -19,52 +21,34 @@ + - + @@ -89,6 +95,37 @@

+ <%if (!serverResponse.equals("!")){ %> + +
+
+
+ + + <% } %> +
+
+ +
+
+ info_outline +
+
+ The admin Role has full access by default.
+
+
+
+
+
+ addCreate

@@ -118,12 +155,12 @@ <%= e.getResourceName() %> <%= e.getStatus() %> - View | - Edit | + View | + Edit |
- Delete + Delete <% } %> @@ -136,38 +173,6 @@ - - \ No newline at end of file diff --git a/war/WEB-INF/View/Access/view.jsp b/war/WEB-INF/View/Access/view.jsp index da79939..af4a0a3 100644 --- a/war/WEB-INF/View/Access/view.jsp +++ b/war/WEB-INF/View/Access/view.jsp @@ -3,30 +3,103 @@ <%@ page import="model.*"%> <% Access access = (Access)request.getAttribute("access"); - String role = (String)request.getAttribute("role"); - String resource = (String)request.getAttribute("resource"); + User user = (User) request.getAttribute("User"); %> - + - -Insert title here + + + Insert title here + + + + + + + + + + -Back

- - - - - - - - - - - - - -
ID<%= access.getId() %>
Role<%= role %>
Resource<%= resource %>
+ +

+ +
+
+ View an Access +
+
+ +
+ ID: <%=access.getId()%>
+ Role: <%=access.getRoleName()%>
+ Resource: <%= access.getResourceName() %> +
+
+ +
+ arrow_backGo Back + +
+ \ No newline at end of file diff --git a/war/WEB-INF/View/Resources/add.jsp b/war/WEB-INF/View/Resources/add.jsp index 5204c39..174aded 100644 --- a/war/WEB-INF/View/Resources/add.jsp +++ b/war/WEB-INF/View/Resources/add.jsp @@ -10,7 +10,7 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% User user = (User) request.getAttribute("User"); %> - + Add a Resource - Hotel Services @@ -20,52 +20,33 @@ + - - + @@ -122,38 +125,6 @@ sourceImg.src = input.value; } - - diff --git a/war/WEB-INF/View/Resources/index.jsp b/war/WEB-INF/View/Resources/index.jsp index 6e05961..6a64d82 100644 --- a/war/WEB-INF/View/Resources/index.jsp +++ b/war/WEB-INF/View/Resources/index.jsp @@ -9,8 +9,11 @@ To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<% User usuario = (User) request.getAttribute("User"); %> -<% List resourceList = (List) request.getAttribute("ResourceList");%> +<% User usuario = (User) request.getAttribute("User"); + List resourceList = (List) request.getAttribute("ResourceList"); + String serverResponse = (String) request.getAttribute("serverResponse"); + if (serverResponse == null) serverResponse = "!"; +%> Resources - Hotel Services @@ -22,52 +25,34 @@ + - + @@ -92,6 +100,24 @@

+ <%if (!serverResponse.equals("!")){ %> + +
+
+
+ + + <% } %> +
+
+ addCreate

@@ -140,37 +166,5 @@ - - diff --git a/war/WEB-INF/View/Resources/view.jsp b/war/WEB-INF/View/Resources/view.jsp index 92858e0..92fa152 100644 --- a/war/WEB-INF/View/Resources/view.jsp +++ b/war/WEB-INF/View/Resources/view.jsp @@ -8,7 +8,7 @@ To change this template use File | Settings | File Templates. --%> <% Resource resource = (Resource) request.getAttribute("Resource"); - User userLogged = (User) request.getAttribute("UserLogged"); + User usuario = (User) request.getAttribute("UserLogged"); boolean editAllowed = (Boolean) request.getAttribute("editAllowed"); String action = (String) request.getAttribute("action"); %> @@ -24,51 +24,33 @@ + - + @@ -135,37 +139,5 @@ - - diff --git a/war/WEB-INF/View/Roles/add.jsp b/war/WEB-INF/View/Roles/add.jsp index 0b7d877..a977221 100644 --- a/war/WEB-INF/View/Roles/add.jsp +++ b/war/WEB-INF/View/Roles/add.jsp @@ -19,53 +19,33 @@ + - - + diff --git a/war/WEB-INF/View/Roles/index.jsp b/war/WEB-INF/View/Roles/index.jsp index e2b0bf6..67c0490 100644 --- a/war/WEB-INF/View/Roles/index.jsp +++ b/war/WEB-INF/View/Roles/index.jsp @@ -8,8 +8,11 @@ To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<% User usuario = (User) request.getAttribute("User"); %> -<% List roleList = (List) request.getAttribute("RoleList");%> +<% User usuario = (User) request.getAttribute("User"); + List roleList = (List) request.getAttribute("RoleList"); + String serverResponse = (String) request.getAttribute("serverResponse"); + if (serverResponse == null) serverResponse = "!"; +%> Roles - Hotel Services @@ -21,53 +24,33 @@ + - - + @@ -92,6 +98,25 @@

+ <%if (!serverResponse.equals("!")){ %> + +
+
+
+ + + <% } %> +
+
+ addCreate

@@ -109,8 +134,8 @@ <% for (int i = 0; i < roleList.size(); i++) {%> - <% Role role = roleList.get(i); %> - <% String key = role.getKey(); + <% Role roleKey = roleList.get(i); %> + <% String key = roleKey.getKey(); String[] arr = key.split(""); @@ -125,9 +150,9 @@ %> - <%= role.getName()%> - <%= role.getStatus()%> - <%= role.getCreateDate()%> + <%= roleKey.getName()%> + <%= roleKey.getStatus()%> + <%= roleKey.getCreateDate()%> View | Edit @@ -143,47 +168,5 @@ - - diff --git a/war/WEB-INF/View/Roles/view.jsp b/war/WEB-INF/View/Roles/view.jsp index 08db8c3..7c13b85 100644 --- a/war/WEB-INF/View/Roles/view.jsp +++ b/war/WEB-INF/View/Roles/view.jsp @@ -7,8 +7,8 @@ Time: 16:39 To change this template use File | Settings | File Templates. --%> -<% Role role = (Role) request.getAttribute("Role"); - User userLogged = (User) request.getAttribute("UserLogged"); +<% Role roleKey = (Role) request.getAttribute("Role"); + User usuario = (User) request.getAttribute("UserLogged"); boolean editAllowed = (Boolean) request.getAttribute("editAllowed"); String action = (String) request.getAttribute("action");%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> @@ -23,52 +23,33 @@ + - + @@ -97,11 +100,11 @@
- + Name:
-
+

Status:
+ + Name of the Service:
+
+ + Price of the Service:
+
+ + Description of the Service:
+
+ + + + + +
+
+
+ arrow_backGo Back + + + + + + diff --git a/war/WEB-INF/View/Services/index.jsp b/war/WEB-INF/View/Services/index.jsp new file mode 100644 index 0000000..ec81cb5 --- /dev/null +++ b/war/WEB-INF/View/Services/index.jsp @@ -0,0 +1,160 @@ +<%@ page import="model.User" %> +<%@ page import="java.util.List" %> +<%@ page import="model.Service" %><%-- + Created by IntelliJ IDEA. + User: Fernando + Date: 07/06/2018 + Time: 16:39 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<% User usuario = (User) request.getAttribute("User"); + List servicesList = (List) request.getAttribute("ServicesList"); + String serverResponse = (String) request.getAttribute("serverResponse"); + if (serverResponse == null) serverResponse = "!"; +%> + + + Services - Hotel Services + + + + + + + + + + + + + + + + + + + + +
+
+ Services +
+
+ + <%if (!serverResponse.equals("!")){ %> + +
+
+
+ + + <% } %> +
+
+ + addCreate +
+
+ + + + + + + + + + + + + + + <% for (Service service: servicesList) {%> + + + + + + + + <% } %> + + + + + +
NamePriceDescriptionCreated byActions
<%= service.getName()%><%= service.getPrice() %><%= service.getDescription() %><%= service.getCreatorUserName() %> + View + | Edit + | Delete
+ +
+ + + diff --git a/war/WEB-INF/View/Services/view.jsp b/war/WEB-INF/View/Services/view.jsp new file mode 100644 index 0000000..74e808a --- /dev/null +++ b/war/WEB-INF/View/Services/view.jsp @@ -0,0 +1,145 @@ +<%@ page import="model.User" %> +<%@ page import="model.Service" %> +<%-- + Created by IntelliJ IDEA. + User: Fernando + Date: 07/06/2018 + Time: 16:39 + To change this template use File | Settings | File Templates. +--%> +<% Service service = (Service) request.getAttribute("Service"); + User usuario = (User) request.getAttribute("User"); + boolean editAllowed = (Boolean) request.getAttribute("editAllowed"); + String action = (String) request.getAttribute("action");%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + <%=action%> a Service - Hotel Services + + + + + + + + + + + + + + + + + + + +
+
+ <%=action%> a Service +
+
+ + <% if (editAllowed) {%> + +
+ + + + + Name of the Service:
+
+ + Price of the Service:
+
+ + Description of the Service:
+
+ + + + +
+ + <% } else {%> + + +
+ Name: <%= service.getName() %>
+ Price: <%= service.getPrice() %>
+ Description: <%= service.getDescription() %>
+ Created by: <%= service.getCreatorUserName() %> +
+ + + <% } %> + +
+
+ arrow_backGo Back + + +
+ + + diff --git a/war/WEB-INF/View/Users/add.jsp b/war/WEB-INF/View/Users/add.jsp index 2444f39..7686e80 100644 --- a/war/WEB-INF/View/Users/add.jsp +++ b/war/WEB-INF/View/Users/add.jsp @@ -21,42 +21,19 @@ + - + @@ -114,8 +113,8 @@ Role of the User:

@@ -140,47 +139,5 @@ sourceImg.src = input.value; } - - diff --git a/war/WEB-INF/View/Users/index.jsp b/war/WEB-INF/View/Users/index.jsp index 35a40f2..af39fcc 100644 --- a/war/WEB-INF/View/Users/index.jsp +++ b/war/WEB-INF/View/Users/index.jsp @@ -7,8 +7,11 @@ To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<% User usuario = (User) request.getAttribute("User"); %> -<% List userList = (List) request.getAttribute("UsersList");%> +<% User usuario = (User) request.getAttribute("User"); + List userList = (List) request.getAttribute("UsersList"); + String serverResponse = (String) request.getAttribute("serverResponse"); + if (serverResponse == null) serverResponse = "!"; +%> Users - Hotel Services @@ -20,53 +23,34 @@ + - + @@ -91,6 +98,25 @@

+ <%if (!serverResponse.equals("!")){ %> + +
+
+
+ + + <% } %> +
+
+ addCreate

@@ -132,47 +158,5 @@ - - diff --git a/war/WEB-INF/View/Users/view.jsp b/war/WEB-INF/View/Users/view.jsp index 1d9956c..faf8836 100644 --- a/war/WEB-INF/View/Users/view.jsp +++ b/war/WEB-INF/View/Users/view.jsp @@ -9,7 +9,7 @@ To change this template use File | Settings | File Templates. --%> <% User user = (User) request.getAttribute("User"); - User userLogged = (User) request.getAttribute("UserLogged"); + User usuario = (User) request.getAttribute("UserLogged"); boolean editAllowed = (Boolean) request.getAttribute("editAllowed"); String action = (String) request.getAttribute("action");%> <% List roles = (List) request.getAttribute("Roles"); %> @@ -25,52 +25,34 @@ + -

- <%=action%> a Role + <%=action%> a User

<% if (editAllowed) {%> -
+ - - + + - Name:
-
-
- Email:
-
-
+ Name:
+
+
+ Email:
+
+
-
-
- Profile Image link
-
-
+
+
+ Profile Image link
+
+
+
+
+ +
-
- -
-
- Role of the User:
- -
+ Role of the User:
+ +
- + - + <% } else {%> @@ -165,47 +169,6 @@ sourceImg.src = input.value; } - - diff --git a/war/WEB-INF/classes/controller/access/AccessControllerAdd.class b/war/WEB-INF/classes/controller/access/AccessControllerAdd.class index cace195..8af0e09 100644 Binary files a/war/WEB-INF/classes/controller/access/AccessControllerAdd.class and b/war/WEB-INF/classes/controller/access/AccessControllerAdd.class differ diff --git a/war/WEB-INF/classes/controller/access/AccessControllerDelete.class b/war/WEB-INF/classes/controller/access/AccessControllerDelete.class index c6cef41..9e881c8 100644 Binary files a/war/WEB-INF/classes/controller/access/AccessControllerDelete.class and b/war/WEB-INF/classes/controller/access/AccessControllerDelete.class differ diff --git a/war/WEB-INF/classes/controller/access/AccessControllerIndex.class b/war/WEB-INF/classes/controller/access/AccessControllerIndex.class index 588183f..333ef28 100644 Binary files a/war/WEB-INF/classes/controller/access/AccessControllerIndex.class and b/war/WEB-INF/classes/controller/access/AccessControllerIndex.class differ diff --git a/war/WEB-INF/classes/controller/access/AccessControllerView.class b/war/WEB-INF/classes/controller/access/AccessControllerView.class index 8ba6c20..b6e1960 100644 Binary files a/war/WEB-INF/classes/controller/access/AccessControllerView.class and b/war/WEB-INF/classes/controller/access/AccessControllerView.class differ diff --git a/war/WEB-INF/classes/controller/roles/RolesControllerAdd.class b/war/WEB-INF/classes/controller/roles/RolesControllerAdd.class index b8c4a71..9620767 100644 Binary files a/war/WEB-INF/classes/controller/roles/RolesControllerAdd.class and b/war/WEB-INF/classes/controller/roles/RolesControllerAdd.class differ diff --git a/war/WEB-INF/classes/controller/roles/RolesControllerDelete.class b/war/WEB-INF/classes/controller/roles/RolesControllerDelete.class index 9ab8a85..1ccc733 100644 Binary files a/war/WEB-INF/classes/controller/roles/RolesControllerDelete.class and b/war/WEB-INF/classes/controller/roles/RolesControllerDelete.class differ diff --git a/war/WEB-INF/classes/controller/roles/RolesControllerIndex.class b/war/WEB-INF/classes/controller/roles/RolesControllerIndex.class index 3d9e0d5..6366fc3 100644 Binary files a/war/WEB-INF/classes/controller/roles/RolesControllerIndex.class and b/war/WEB-INF/classes/controller/roles/RolesControllerIndex.class differ diff --git a/war/WEB-INF/classes/controller/roles/RolesControllerView.class b/war/WEB-INF/classes/controller/roles/RolesControllerView.class index 5ce18a2..d55f262 100644 Binary files a/war/WEB-INF/classes/controller/roles/RolesControllerView.class and b/war/WEB-INF/classes/controller/roles/RolesControllerView.class differ diff --git a/war/WEB-INF/classes/controller/users/UsersControllerAdd.class b/war/WEB-INF/classes/controller/users/UsersControllerAdd.class index d3eb860..1caa8d1 100644 Binary files a/war/WEB-INF/classes/controller/users/UsersControllerAdd.class and b/war/WEB-INF/classes/controller/users/UsersControllerAdd.class differ diff --git a/war/WEB-INF/classes/controller/users/UsersControllerDelete.class b/war/WEB-INF/classes/controller/users/UsersControllerDelete.class index 5942604..8de34b4 100644 Binary files a/war/WEB-INF/classes/controller/users/UsersControllerDelete.class and b/war/WEB-INF/classes/controller/users/UsersControllerDelete.class differ diff --git a/war/WEB-INF/classes/controller/users/UsersControllerIndex.class b/war/WEB-INF/classes/controller/users/UsersControllerIndex.class index 68caa7b..800c63c 100644 Binary files a/war/WEB-INF/classes/controller/users/UsersControllerIndex.class and b/war/WEB-INF/classes/controller/users/UsersControllerIndex.class differ diff --git a/war/WEB-INF/classes/controller/users/UsersControllerView.class b/war/WEB-INF/classes/controller/users/UsersControllerView.class index 7e3f902..be83d05 100644 Binary files a/war/WEB-INF/classes/controller/users/UsersControllerView.class and b/war/WEB-INF/classes/controller/users/UsersControllerView.class differ diff --git a/war/WEB-INF/classes/model/Access.class b/war/WEB-INF/classes/model/Access.class index a9fdefa..5273097 100644 Binary files a/war/WEB-INF/classes/model/Access.class and b/war/WEB-INF/classes/model/Access.class differ diff --git a/war/WEB-INF/classes/model/Resource.class b/war/WEB-INF/classes/model/Resource.class index b55a714..72d99b5 100644 Binary files a/war/WEB-INF/classes/model/Resource.class and b/war/WEB-INF/classes/model/Resource.class differ diff --git a/war/WEB-INF/classes/model/User.class b/war/WEB-INF/classes/model/User.class index c99559f..8ada349 100644 Binary files a/war/WEB-INF/classes/model/User.class and b/war/WEB-INF/classes/model/User.class differ diff --git a/war/WEB-INF/web.xml b/war/WEB-INF/web.xml index 4d0420a..1980996 100644 --- a/war/WEB-INF/web.xml +++ b/war/WEB-INF/web.xml @@ -125,6 +125,7 @@ AccessControllerEdit /access/edit + AccessControllerAdd controller.access.AccessControllerAdd @@ -132,7 +133,8 @@ AccessControllerAdd /access/add - + + AccessControllerIndex controller.access.AccessControllerIndex @@ -140,7 +142,8 @@ AccessControllerIndex /access - + + AccessControllerView controller.access.AccessControllerView @@ -148,7 +151,8 @@ AccessControllerView /access/view - + + AccessControllerDelete controller.access.AccessControllerDelete @@ -159,6 +163,46 @@ + + + ServicesControllerAdd + controller.services.ServicesControllerAdd + + + ServicesControllerAdd + /services/add + + + + ServicesControllerDelete + controller.services.ServicesControllerDelete + + + ServicesControllerDelete + /services/delete + + + + ServicesControllerIndex + controller.services.ServicesControllerIndex + + + ServicesControllerIndex + /services + + + + ServicesControllerView + controller.services.ServicesControllerView + + + ServicesControllerView + /services/view + + + index.html diff --git a/war/css/Diseno.css b/war/css/Diseno.css index 3652326..b691eee 100644 --- a/war/css/Diseno.css +++ b/war/css/Diseno.css @@ -113,4 +113,4 @@ a:active { font-family: "Product Sans"; font-weight: bold; src: url("../fonts/ProductSansBold.ttf"); -} \ No newline at end of file +} diff --git a/war/css/Elements.css b/war/css/Elements.css new file mode 100644 index 0000000..edf3699 --- /dev/null +++ b/war/css/Elements.css @@ -0,0 +1,61 @@ +.postLink{ + color: blue; + font-size: large; + cursor: pointer; + + transition: color 250ms ease-in; +} +.postLink:hover{ + color: green; + font-size: larger; +} +body{ + margin: 0; + padding: 0; + background-color: white; + font-family: Roboto, serif; +} +.whiteLink{ + color: white; +} +.whiteLink:hover{ + color: white; +} +#serverResponse{ + color: white; + background-color: #26a69a; + display: inline-block; + font-size: large; + border-radius: 4px; + box-shadow: 2px 2px gray; + cursor: default; + overflow: hidden; + max-height: 0; + transition: max-height 1s ease-in-out; +} +#serverResponse::selection{ + background: transparent; + text-shadow: 2px 2px gray; +} + +.dropdown { + position: relative; + display: inline-block; + text-decoration: underline; +} +#dropdownContent { + max-height: 0; + position: absolute; + background-color: #f9f9f9; + min-width: 150px; + box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); + z-index: 2; + overflow: hidden; + transition: max-height 250ms; +} +#dropdownContent a { + color: black; + padding: 4px 16px; + text-decoration: none; + display: block; +} \ No newline at end of file diff --git a/war/index.html b/war/index.html index 640667a..485280b 100644 --- a/war/index.html +++ b/war/index.html @@ -51,10 +51,36 @@
- Welcome! Log In to Start: + Welcome! Log In to Start

-
+
+ With Google: +
+
+
+ Or with your email:
+
+ + +
+ + + + + + + + +
+


@@ -63,7 +89,6 @@ Jose Rodriguez, 20101650
Gustavo Turpo, 20173374
-
diff --git a/war/js/GlobalJs.js b/war/js/GlobalJs.js new file mode 100644 index 0000000..6cc9fff --- /dev/null +++ b/war/js/GlobalJs.js @@ -0,0 +1,37 @@ +var dropdownOpen = false; +var dropdown = document.getElementById("dropdownContent"); +function toggleDropdown() { + (dropdownOpen)? dropdown.style.maxHeight = "0": dropdown.style.maxHeight = "300px"; + dropdownOpen = !dropdownOpen; +} + +var userOptions = document.getElementById("userOptions"); +var isUserOptionsEnable = true; +document.getElementById("cerrar").addEventListener("click", changeUserOptions()); +function changeUserOptions() { + if (isUserOptionsEnable){ + userOptions.style.display = "none"; + } else { + userOptions.style.display = "block"; + } + isUserOptionsEnable = !isUserOptionsEnable; +} + +function postRedirect(url, postData){ + var postForm = document.createElement("form"); + postForm.action = url; + postForm.method = "POST"; + postForm.style.display = "none"; + for (var key in postData){ + if (postData.hasOwnProperty(key)){ + var input = document.createElement("input"); + input.type = "hidden"; + input.name = key; + input.value = postData[key]; + postForm.appendChild(input); + } + } + document.body.appendChild(postForm); + postForm.submit(); +} +