public String autenticacaoUsuario(
      Permissao permissaoAute, PerfilUsuarioOrgao perfilUsuarioOrgao) {
    permissaoAtual = listaPermissao.get(listaPermissao.indexOf(permissaoAute));
    // Confere se o mesmo contém permissão para algum orgão
    if (!permissaoAtual.getPerfilUsuarioOrgaos().isEmpty()) {
      if (authenticationService.login(usuario)) {

        if (listaPermissao != null && !listaPermissao.isEmpty()) {
          setPermissoes(listaPermissao);
          // Verefica se as permissoes do usuário é mais que 1..então.
          idPermissaoAtual = permissaoAtual.getId();

          // modelMenu = MenuUtil.formarMenu(menuService.findByMenu(usuario.getCpf(),
          // permissaoAtual.getPerfil().getId()));
          setMenusAcesso(
              menuService.findByMenu(usuario.getCpf(), permissaoAtual.getPerfil().getId()));
          // BUSCA OS PERFILSUUSARIOORGAOPERMISSAO que o usuário tem acesso.. todos os orgãos.
          buscarPerfilUsuarioOrgaoPermissaoId();
          // Quando for na hora de logar o sistema pegará sempre a primeira possição do vetor.
          if (perfilUsuarioOrgao == null) {
            orgaoPerfilAcesso = permissaoAtual.getPerfilUsuarioOrgaos().get(0).getOrgao();
          } else {

            // orgaoPerfilAcesso =
            // permissaoAtual.getPerfilUsuarioOrgaos().get(permissaoAtual.getPerfilUsuarioOrgaos().indexOf(perfilUsuarioOrgao)).getOrgao();
            orgaoPerfilAcesso = perfilUsuarioOrgao.getOrgao();
          }

          // Atribui os valores na sessao
          orgaoDescricao = permissaoAtual.getLotadoOrgao();
          regionalId = permissaoAtual.getLotadoRegional_id();
          regionalDescricao = permissaoAtual.getRegional();
          setorDescricao = permissaoAtual.getLotadoSetor();
          setorId = permissaoAtual.getLotadoSetor_id();
          setServidor(authenticationService.getUsuarioLogado().getCpf());
          autenticado = true;
          return "/index?faces-redirect=true";

        } else {
          MensagensController.addWarn("Nao contem permissao para o Usuário!");
          return "login";
        }
      } else {
        MensagensController.addWarn("Usuário ou Senha Inválidos!");
        return "login";
      }
    } else {
      logout();
      MensagensController.addError("O usuário não contém nenhum Orgao atribuido!");
      return "login";
    }
  }
 public String trocaPerfilOrgao(PerfilUsuarioOrgao perfilUsuarioOrgao) {
   System.out.println("Aqui troca 1");
   Usuario usuarioLocal = usuario;
   authenticationService.logout();
   usuario = usuarioLocal;
   System.out.println("Aqui troca 2");
   return autenticacaoUsuario(perfilUsuarioOrgao.getPermissaoUsuario(), perfilUsuarioOrgao);
 }
 /**
  * Método para efetuar o logout do usuário no sistema. Utiliza uma chamada ao método logout do
  * serviço de autenticação.
  *
  * @return
  */
 public String logout() {
   autenticado = false;
   servidor = new Servidor();
   authenticationService.logout();
   return "sair";
 }