/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.pepe.controller;
import com.pepe.jpa.entities.Usuario;
import com.pepe.jpa.sesions.UsuarioFacade;
import java.io.Serializable;
import java.security.Principal;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Named
@SessionScoped
public class LoginController implements Serializable {
private static final Logger log = Logger.getLogger(LoginController.class.getName());
private String username;
private String password;
private Usuario usuario;
@EJB
private UsuarioFacade usuarioFacade;
/*public LoginController() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
if (session != null) {
session.invalidate();
}
}*/
public String getUsername() {
return username;
}
private UsuarioFacade getUsuarioFacade() {
return usuarioFacade;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isAuthenticated() {
return getRequest().getUserPrincipal() != null;
}
public Principal getPrincipal() {
return getRequest().getUserPrincipal();
}
private HttpServletRequest getRequest() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Object request = externalContext.getRequest();
return request instanceof HttpServletRequest ? (HttpServletRequest) request : null;
}
private String getLogueado() {
return getPrincipal().getName();
}
public Usuario getUserLogueado() {
return getUsuarioFacade().findByDocumento(getLogueado());
}
public boolean isAdministrador() {
return getRequest().isUserInRole("webAdmin");
}
public boolean isUser() {
return getRequest().isUserInRole("webUser");
}
public boolean isApren() {
return getRequest().isUserInRole("webApren");
}
public boolean isGest() {
return getRequest().isUserInRole("webGest");
}
public boolean isPedag() {
return getRequest().isUserInRole("webPedag");
}
public String login() {
try {
//Login via the Servlet Context
getRequest().login(username, password);
usuario = getUserLogueado();
limpiar();
// //Cancela login para usuarios inactivos
if (usuario.getEstado()== false) {
logout();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Usuario Inactivo", null));
return "/index";
}
//Redirigir a la página de portada
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenid@ " + usuario.toString(), null));
return "/index";
} catch (ServletException ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuario o Contraseña Invalida", null));
return "/index";
}
}
public void logout() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
try {
request.logout();
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.invalidate();
limpiar();
//return "/user/close";
} catch (ServletException e) {
log.log(Level.SEVERE, "Failed to logout user!", e);
//return "/index";
}
}
private void limpiar() {
username = "";
password = "";
}
}