managedbeans.UsuarioController.java Source code

Java tutorial

Introduction

Here is the source code for managedbeans.UsuarioController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbeans;

import business.UsuariosLocal;
import entities.Profesor;
import entities.TipoUsuario;
import entities.Usuario;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import managedbeans.util.JsfUtil;
import org.apache.http.HttpResponse;
import sessionbeans.UsuarioFacadeLocal;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.primefaces.json.JSONObject;
import sessionbeans.ProfesorFacadeLocal;

/**
 *
 * @author jano
 */
@Named(value = "usuarioController")
//@RequestScoped
@SessionScoped
public class UsuarioController implements Serializable {

    private String nombre;
    private String password;
    private boolean error = false;
    private List<TipoUsuario> roles;
    @EJB
    private UsuariosLocal usuarioBussines;
    @EJB
    private UsuarioFacadeLocal facadeLocal;
    @EJB
    private ProfesorFacadeLocal profesorFacade;

    public List<TipoUsuario> getRoles() {
        return roles;
    }

    public void setRoles(List<TipoUsuario> roles) {
        this.roles = roles;
    }

    public boolean isError() {
        return error;
    }

    public void setError(boolean error) {
        this.error = error;
    }

    public UsuarioController() {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext()
                .getSession(false);
        if (session != null) {
            session.invalidate();
        }
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<Usuario> getAllPorfes() {
        List<Usuario> usuarios = facadeLocal.findAll();
        List<Profesor> profesores = profesorFacade.findAll();
        if (profesores != null) {
            ArrayList<Usuario> usuariosProfes = new ArrayList<>();
            for (Usuario u : usuarios) {
                for (Profesor p : profesores) {
                    if (u.getRut_usuario().equals(p.getRutProfesor())) {
                        usuariosProfes.add(u);
                    }
                }
            }
            return usuariosProfes;
        } else {
            return null;
        }
    }

    public String getAlias(String rut) {

        if (profesorFacade.find(rut) != null) {
            if (profesorFacade.find(rut).getAlias() == null) {
                return "";
            } else {
                return profesorFacade.find(rut).getAlias();
            }
        } else {
            return "";
        }
    }

    public String MD5(String md5) {
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte[] array = md.digest(md5.getBytes());
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < array.length; ++i) {
                sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString();
        } catch (java.security.NoSuchAlgorithmException e) {
        }
        return null;
    }

    public void login() {
        System.out.println("Funcin login: Comenzando autenticacin");
        FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext externalContext = context.getExternalContext();
        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
        //LoginContext lc = null;

        try {
            if (!hasIdentity()) {
                //Autenticacin con LDAP
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://inicio.diinf.usach.cl/webservice.php");

                // Add your data
                List<BasicNameValuePair> nameValuePairs = new ArrayList<>(2);
                nameValuePairs.add(new BasicNameValuePair("user", nombre));
                nameValuePairs.add(new BasicNameValuePair("pass", password));
                nameValuePairs.add(new BasicNameValuePair("keyapi", MD5("c55ecd5c60a5a5b2bea1c92bbc45f8ab")));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);

                String responseString = new BasicResponseHandler().handleResponse(response);
                System.out.println(responseString);

                /*
                JSONParser parser = new JSONParser(null, null)
                    
                Object obj = parser.parse(responseString);
                */

                JSONObject jsonObject = new JSONObject(responseString);

                Boolean valido_response = (Boolean) jsonObject.get("pass_ok");
                if (valido_response == null) {
                    valido_response = false;
                }
                System.out.println("Datos Validos: " + valido_response);

                //FIN AUTENTICACIN LDAP

                request.login(nombre, jsonObject.getString("pass_ok"));
                if (valido_response) {
                    System.out.println("SessionUtil: SessionScope created for " + nombre);
                    JsfUtil.addSuccessMessage("Logeado con xito");
                    Usuario usuario = usuarioBussines.findByUid(nombre);
                    setRoles(usuario.getRoles());
                    System.out.println("nombre de usuario: " + usuario.getNombre_usuario() + " - rol: "
                            + usuario.getRoles().get(0).getTipo());
                    if (usuario.getRoles().get(0).getTipo().equals("COORDINADOR DOCENTE")) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/easy-planning-web/faces/coordinador_docente/index.xhtml");
                    } else if (usuario.getRoles().get(0).getTipo().equals("PROFESOR")) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/easy-planning-web/faces/profesor/index.xhtml");
                    } else {
                        System.out.println("no se sabe el rol");
                    }
                    error = false;
                }
            } else {
                System.out.println("SessionUtil: User allready logged");
                error = false;
            }

        } catch (Exception e) {
            System.out.println("SessionUtil: User or password not found");
            JsfUtil.addErrorMessage("El usuario y/o la contrasea no coinciden");
            error = true;
        }
    }

    public boolean hasIdentity() {
        FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext externalContext = context.getExternalContext();
        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

        if (request.getRemoteUser() == null) {
            return false;
        }
        return true;
    }

    public void logout() throws IOException {
        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        externalContext.invalidateSession();
        externalContext.redirect("/easy-planning-web/faces/login.xhtml");
    }

    public boolean compruebaRoles() {
        boolean roles = false;
        if (getRoles().size() > 1) {
            if (getRoles().get(0).getTipo().equals("COORDINADOR DOCENTE")
                    && getRoles().get(1).getTipo().equals("PROFESOR")) {
                roles = true;
            } else if (getRoles().get(1).getTipo().equals("COORDINADOR DOCENTE")
                    && getRoles().get(0).getTipo().equals("PROFESOR")) {
                roles = true;
            }
        }
        return roles;
    }

    public Usuario getUsuario(String rut) {
        return facadeLocal.find(rut);
    }

}