Este Servlet:
-Se accede al iniciar sesion con Google (Por ahora) -Comprueba si existe una sesion. -Comprueba si existe un usuario, sino, lo crea.
This commit is contained in:
parent
405f9c1e5c
commit
04aa2f95a2
@ -1,18 +1,128 @@
|
|||||||
package controller.users;
|
package controller.users;
|
||||||
|
|
||||||
|
import model.Role;
|
||||||
|
import model.User;
|
||||||
|
|
||||||
|
import javax.jdo.JDOObjectNotFoundException;
|
||||||
|
import javax.jdo.PersistenceManager;
|
||||||
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;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class UsersControllerAdd extends HttpServlet {
|
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();
|
||||||
|
|
||||||
|
//El ID del usuario. Este id se obtiene de la direccion de correo -> en richard@gmail.com el ID es richard
|
||||||
|
String userID;
|
||||||
|
|
||||||
|
try {
|
||||||
|
//El parametro logIn se añade unicamente al iniciar sesion, mas no al crear un nuevo usario.
|
||||||
|
isLogIn = request.getParameter("logIn").equals("logIn");
|
||||||
|
} catch (NullPointerException e){
|
||||||
|
//Si lo que se quiere es crear un usuario, y no iniciar sesion.
|
||||||
|
isLogIn = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Si se quiere iniciar sesion
|
||||||
|
if (isLogIn){
|
||||||
|
//Obtiene el ID del Usuario que va iniciar sesion.
|
||||||
|
userID = request.getParameter("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)){
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//Si lo que se quiere hacer es crear un Usuario
|
||||||
|
else {
|
||||||
|
String userEmail;
|
||||||
|
userID = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
crearUsuario(userID,request,pm);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
//Redirige a doPost
|
||||||
|
doPost(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
//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){
|
||||||
|
try{
|
||||||
|
//Intenta buscar en el DataStore un usuario con el ID respectivo.
|
||||||
|
User usr = pm.getObjectById(User.class, id);
|
||||||
|
|
||||||
|
//Si lo encuentra lo imprime en consola y devuelve true (el usuario si existe)
|
||||||
|
System.out.println(usr);
|
||||||
|
return true;
|
||||||
|
} catch (JDOObjectNotFoundException exc){
|
||||||
|
//Si no lo encuentra, se lanza una Excepción, se captura, y se devuelve false (el usuario no existe)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Comprueba si existe una sesion: sesion -> Objeto HttpSesion que contiene la sesion actual
|
||||||
|
private boolean sesionExist(HttpSession sesion){
|
||||||
|
try{
|
||||||
|
//Intenta buscar el atributo userID dentro de la sesion
|
||||||
|
boolean a = sesion.getAttribute("userID").toString().isEmpty();
|
||||||
|
//Si lo encuentra, la sesion si existe
|
||||||
|
return true;
|
||||||
|
} catch (NullPointerException e){
|
||||||
|
//Si no, la sesion no existe
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void crearUsuario(String userID, HttpServletRequest request, PersistenceManager pm){
|
||||||
|
|
||||||
|
//Revisa si el usuario con su ID ya tiene un objeto User Persistente almacenado.
|
||||||
|
if (userExists(userID, pm)){
|
||||||
|
System.out.println("User exists!!!!");
|
||||||
|
}
|
||||||
|
//Si no existe, crea el objeto de tipo User con los datos que se obtienen del request, y lo hace Persistente.
|
||||||
|
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.
|
||||||
|
User user = new User(userID, userName, userImg, email, new Role(userRole));
|
||||||
|
|
||||||
|
try{
|
||||||
|
pm.makePersistent(user);
|
||||||
|
System.out.println("Usuario creado con exito.");
|
||||||
|
} finally {
|
||||||
|
pm.close();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user