Package br.com.buyFast.controller.adminController

Source Code of br.com.buyFast.controller.adminController.AdminController

package br.com.buyFast.controller.adminController;

import java.io.Serializable;

import javax.annotation.Resource;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.buyFast.model.Administrator;
import br.com.buyFast.model.Employee;
import br.com.buyFast.service.Facade;
import br.com.buyFast.service.ServiceException;
import br.com.buyFast.util.FacesUtil;

/**
* Classe que representa o controller para a área administrativa.
*/
@Controller("adminController")
@Scope("session")
public class AdminController implements Serializable {

  /**
   * {@link Serializable}.
   */
  private static final long serialVersionUID = 1L;
  /**
   * Representa o modelo {@link Employee}.
   */
  private Employee employee;
  /**
   * Representa o modelo {@link Administrator}.
   */
  private Administrator admin;
  /**
   * Guarda o último acesso para a área administrativa.
   */
  private String originViewId;
  /**
   * Representa a camada de serviço da aplicação.
   */
  @Resource
  private Facade facade;
 
  /**
   * Instancia um novo {@link AdminController}.
   */
  public AdminController() {
    this.employee = new Employee();
    this.admin = new Administrator();
  }
 
  /**
   * Executa o login para a área administrativa.
   * @return
   */
  public String login() {
    Employee employee = null;
    try {
      /*
       * Verificando login e senha no banco de dados.
       * Foi utilizado employee, pois funcionário e uma super class
       * de administrador. Será verificado se employee é uma instância de
       * administrador, caso seja setar admin. Se não, setar employee.
       * As permissões serão validadas na classe AdminLoginPhaseListener.
       */
      employee = facade.checkEmployee(this.admin.getUser(), this.admin.getPassword());
    } catch (ServiceException e) {
      FacesUtil.mensWarn(
          FacesUtil.getMessage("adminControllerErrorGetLoginTitle"),
          FacesUtil.getMessage("adminControllerErrorGetLogin"));
      return null;
    }

    /*
     * Se funcionário não for nulo e senha e usuário corretas
     * criar a sessão e redirecionar para a página principal
     * da área administrativa.
     */
    if (employee != null && employee.getUser().equals(admin.getUser())
        && employee.getPassword().equals(admin.getPassword())) {
     
      /*
       * Verifica se o usuário é um administrador. Caso seja,
       * setar o modelo administrator.
       */
      if (employee instanceof Administrator) {
        this.admin = (Administrator) employee;
      } else {
        this.employee = employee;
      }
     
      //Criar a sessão
      HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
        .getExternalContext().getSession(false);
     
      //Criar atributo na sessão com o nome do usuário logado.
      session.setAttribute("employee", employee);
     
      if (session.getAttribute("msg") != null) {
        session.removeAttribute("msg");
      }
     
      /*
       * Caso ele senha tentado acessar uma página diretamente,
       * redirecionar para a página.
       */
      if (originViewId != null) {
        FacesUtil.redirectPage(originViewId);
        return null;
      }
     
      // Apresentar uma mensagem de boas vindas (Usando PrimeFaces growl)
      FacesUtil.mensInfo(
          FacesUtil.getMessage("adminHomeMessageBeginTitle"),
          FacesUtil.getMessage("adminHomeMessageBegin"));
     
      return "adminhome";
   
    } else {
      FacesUtil.mensErro(
          "",
          FacesUtil.getMessage("adminControllerErrorLoginAndPassword"));
      return null;
    }
   
  }
 
  /**
   * Faz logout do sistema.
   *
   * @return
   */
  public String logout() {
    FacesContext context = FacesContext.getCurrentInstance();
    ExternalContext externalContext = context.getExternalContext();
    Object session = externalContext.getSession(false);
    HttpSession httpSession = (HttpSession) session;
    httpSession.invalidate();
   
    return "adminlogin";
  }

  /**
   * Obter o funcionário.
   * @return o funcionário.
   */
  public Employee getEmployee() {
    return employee;
  }

  /**
   * Obter o administrador.
   * @return o administrador.
   */
  public Administrator getAdmin() {
    return admin;
  }

  /**
   * Obter o último acesso do usuário.
   * @return o último acesso do usuário.
   */
  public String getOriginViewId() {
    String temp = originViewId;
    originViewId = null;
    return temp;
  }

  /**
   * Guardar o último acesso do usuário.
   * @param originViewId o último acesso do usuário.
   */
  public void setOriginViewId(String originViewId) {
    this.originViewId = originViewId;
  }
 
}
TOP

Related Classes of br.com.buyFast.controller.adminController.AdminController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.