Funcionalidad basica completa.
This commit is contained in:
parent
3b8c0aea9f
commit
f366e5d4a0
@ -5,6 +5,7 @@ import model.User;
|
|||||||
|
|
||||||
import javax.jdo.JDOObjectNotFoundException;
|
import javax.jdo.JDOObjectNotFoundException;
|
||||||
import javax.jdo.PersistenceManager;
|
import javax.jdo.PersistenceManager;
|
||||||
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -17,52 +18,93 @@ public class UsersControllerAdd extends HttpServlet {
|
|||||||
|
|
||||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
|
||||||
//Comprueba si lo que queremos hacer es iniciar sesion, o simplemente crear un usuario
|
|
||||||
boolean isLogIn;
|
|
||||||
|
|
||||||
PersistenceManager pm = controller.PMF.get().getPersistenceManager();
|
PersistenceManager pm = controller.PMF.get().getPersistenceManager();
|
||||||
|
|
||||||
//El ID del usuario. Este id se obtiene de la direccion de correo -> en richard@gmail.com el ID es richard
|
//Email del usuario
|
||||||
|
String userEmail = request.getParameter("userEmail");
|
||||||
|
|
||||||
|
//Solo se usa al actualizar un usuario.
|
||||||
|
String prevUserID = request.getParameter("userID");
|
||||||
|
|
||||||
|
//El ID del usuario. Este id se obtiene del email -> en richard@gmail.com el ID es richard
|
||||||
String userID;
|
String userID;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//El parametro logIn se añade unicamente al iniciar sesion, mas no al crear un nuevo usario.
|
userID = userEmail.substring(0,userEmail.indexOf("@"));
|
||||||
isLogIn = request.getParameter("logIn").equals("logIn");
|
|
||||||
} catch (NullPointerException e){
|
} catch (NullPointerException e){
|
||||||
//Si lo que se quiere es crear un usuario, y no iniciar sesion.
|
userID = prevUserID;
|
||||||
isLogIn = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Si se quiere iniciar sesion
|
//Parametros necesarios.
|
||||||
if (isLogIn){
|
String userName = request.getParameter("userName");
|
||||||
//Obtiene el ID del Usuario que va iniciar sesion.
|
String userImg = request.getParameter("userImg");
|
||||||
userID = request.getParameter("userID");
|
String userRole = request.getParameter("userRole");
|
||||||
|
|
||||||
//Busca si ya existe una sesion iniciada
|
//Accion a realizar
|
||||||
HttpSession misesion= request.getSession(true);
|
String action = request.getParameter("action");
|
||||||
|
|
||||||
//Si no existe la sesion, la crea usando el ID del usuario
|
if (action == null)
|
||||||
if (!sesionExist(misesion)){
|
action = "";
|
||||||
System.out.println("No existe sesión. Se creará.");
|
|
||||||
|
|
||||||
misesion = request.getSession(true);
|
|
||||||
misesion.setAttribute("userID",userID);
|
|
||||||
//La sesion perdurara sin actividad durante 6 minutos
|
|
||||||
misesion.setMaxInactiveInterval(360);
|
|
||||||
}
|
|
||||||
//Si la sesion existe, continua.
|
|
||||||
else {
|
|
||||||
System.out.println("Sesion: " + misesion.getId() + "\nUserID: " + misesion.getAttribute("userID"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
switch (action) {
|
||||||
//Si lo que se quiere hacer es crear un Usuario
|
//Si se quiere iniciar sesion y/o registrar un usuario desde el inicio de sesion de Google
|
||||||
else {
|
case "logIn":
|
||||||
String userEmail;
|
|
||||||
userID = "";
|
//Busca si ya existe una sesion iniciada
|
||||||
|
HttpSession misesion = request.getSession(true);
|
||||||
|
|
||||||
|
//Si no existe la sesion, la crea usando el ID del usuario
|
||||||
|
if (!sesionExist(misesion)) {
|
||||||
|
|
||||||
|
misesion = request.getSession(true);
|
||||||
|
misesion.setAttribute("userID", userID);
|
||||||
|
|
||||||
|
//La sesion perdurara sin actividad durante 6 minutos
|
||||||
|
misesion.setMaxInactiveInterval(360);
|
||||||
|
}
|
||||||
|
|
||||||
|
crearUsuario(userID, userEmail, userName, userImg, userRole, pm);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
//Si lo que se quiere es redirigir al Form para crear usuario
|
||||||
|
case "redirect":
|
||||||
|
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/View/Users/Add.jsp");
|
||||||
|
dispatcher.forward(request, response);
|
||||||
|
break;
|
||||||
|
|
||||||
|
//Si lo que se quiere es Crear (proviene del formulario)
|
||||||
|
case "create":
|
||||||
|
crearUsuario(userID, userEmail, userName, userImg, userRole, pm);
|
||||||
|
break;
|
||||||
|
|
||||||
|
//Si lo que se quiere es actualizar un Usuario
|
||||||
|
case "update":
|
||||||
|
|
||||||
|
User user = pm.getObjectById(User.class, prevUserID);
|
||||||
|
|
||||||
|
user.setName(userName);
|
||||||
|
user.setEmail(userEmail);
|
||||||
|
user.setImgUrl(userImg);
|
||||||
|
user.setRole(new Role(userRole));
|
||||||
|
|
||||||
|
break;
|
||||||
|
//Intenta eliminar un usario con el paramaetro userID
|
||||||
|
case "delete":
|
||||||
|
|
||||||
|
try{
|
||||||
|
pm.deletePersistent(pm.getObjectById(User.class, userID));
|
||||||
|
} catch (JDOObjectNotFoundException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
crearUsuario(userID,request,pm);
|
pm.close();
|
||||||
|
response.sendRedirect("/users");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,13 +114,12 @@ public class UsersControllerAdd extends HttpServlet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Revisa si un usuario existe: id -> ID del usuario (ejm. en richard@gmail.com el ID es richard)
|
//Revisa si un usuario existe: id -> ID del usuario (ejm. en richard@gmail.com el ID es richard)
|
||||||
private boolean userExists(String id, PersistenceManager pm){
|
private boolean userExists(String userID, PersistenceManager pm){
|
||||||
try{
|
try{
|
||||||
//Intenta buscar en el DataStore un usuario con el ID respectivo.
|
//Intenta buscar en el DataStore un usuario con el ID respectivo.
|
||||||
User usr = pm.getObjectById(User.class, id);
|
User usr = pm.getObjectById(User.class, userID);
|
||||||
|
|
||||||
//Si lo encuentra lo imprime en consola y devuelve true (el usuario si existe)
|
//Si lo encuentra devuelve true (el usuario si existe)
|
||||||
System.out.println(usr);
|
|
||||||
return true;
|
return true;
|
||||||
} catch (JDOObjectNotFoundException exc){
|
} catch (JDOObjectNotFoundException exc){
|
||||||
//Si no lo encuentra, se lanza una Excepción, se captura, y se devuelve false (el usuario no existe)
|
//Si no lo encuentra, se lanza una Excepción, se captura, y se devuelve false (el usuario no existe)
|
||||||
@ -92,6 +133,7 @@ public class UsersControllerAdd extends HttpServlet {
|
|||||||
//Intenta buscar el atributo userID dentro de la sesion
|
//Intenta buscar el atributo userID dentro de la sesion
|
||||||
boolean a = sesion.getAttribute("userID").toString().isEmpty();
|
boolean a = sesion.getAttribute("userID").toString().isEmpty();
|
||||||
//Si lo encuentra, la sesion si existe
|
//Si lo encuentra, la sesion si existe
|
||||||
|
System.out.println("Session exists");
|
||||||
return true;
|
return true;
|
||||||
} catch (NullPointerException e){
|
} catch (NullPointerException e){
|
||||||
//Si no, la sesion no existe
|
//Si no, la sesion no existe
|
||||||
@ -99,7 +141,7 @@ public class UsersControllerAdd extends HttpServlet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void crearUsuario(String userID, HttpServletRequest request, PersistenceManager pm){
|
private void crearUsuario(String userID, String userEmail, String userName, String userImg, String userRole, PersistenceManager pm){
|
||||||
|
|
||||||
//Revisa si el usuario con su ID ya tiene un objeto User Persistente almacenado.
|
//Revisa si el usuario con su ID ya tiene un objeto User Persistente almacenado.
|
||||||
if (userExists(userID, pm)){
|
if (userExists(userID, pm)){
|
||||||
@ -107,22 +149,18 @@ public class UsersControllerAdd extends HttpServlet {
|
|||||||
}
|
}
|
||||||
//Si no existe, crea el objeto de tipo User con los datos que se obtienen del request, y lo hace Persistente.
|
//Si no existe, crea el objeto de tipo User con los datos que se obtienen del request, y lo hace Persistente.
|
||||||
else {
|
else {
|
||||||
String userName = request.getParameter("userName");
|
|
||||||
String userImg = request.getParameter("userImg");
|
|
||||||
String userRole = request.getParameter("userRole");
|
|
||||||
String email = userID + "@gmail.com";
|
|
||||||
|
|
||||||
//El new Role es provisional, hasta que termine la implementacion del CRUD de Role.
|
//El new Role es provisional, hasta que termine la implementacion del CRUD de Role.
|
||||||
User user = new User(userID, userName, userImg, email, new Role(userRole));
|
User user = new User(userID, userName, userImg, userEmail, new Role(userRole));
|
||||||
|
|
||||||
try{
|
try{
|
||||||
pm.makePersistent(user);
|
pm.makePersistent(user);
|
||||||
System.out.println("Usuario creado con exito.");
|
|
||||||
} finally {
|
} finally {
|
||||||
pm.close();
|
System.out.println("Usuario creado con exito.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user