if (funcionarios == null || funcionarios.isEmpty()) {
return null;
}
Funcionario funcionario = null;
for (Iterator iter = funcionarios.iterator(); iter.hasNext();) {
Funcionario temp = (Funcionario) iter.next();
if (temp.checarLoginBloqueado()) {
validaSenha = 1;
continue;
}
if (senha.equals(temp.getSenha())) {
if (temp.getDataBloqueioLogin() != null
&& temp.getDataBloqueioLogin().after(agora)) {
validaSenha = 1; // Mensagem de login bloqueado
} else {
temp.desbloquearLogin();
funcionario = temp;
funcionarioDao.save(temp);
break;
}
} else {
if (!orgao.equals(temp.getInstituicao())) {
validaSenha = 3;
continue;
}
// Valida tentativas de acesso
Integer tempoBloqueio = null;
int numeroTentativas = 0;
int numeroTentativasPossiveis = 0;
// número de tentativas
if (temp.getQtdTentativasLogin() == null) {
numeroTentativas = 1;
} else {
numeroTentativas = temp.getQtdTentativasLogin().intValue() + 1;
}
ParametrosGerais parametrosGerais = (ParametrosGerais) parametrosDao
.get(new Long(1));
// número limite de tentativas
if (parametrosGerais.getLimiteFalhasLogin() != null) {
numeroTentativasPossiveis = parametrosGerais
.getLimiteFalhasLogin().intValue();
}
if (numeroTentativas >= numeroTentativasPossiveis) {
// Recupera o tempo de bloqueio do login
tempoBloqueio = parametrosGerais.getTempoBloqueioLogin();
temp.bloquearLogin(tempoBloqueio);
validaSenha = 1; // Mensagem de login bloqueado
} else if (numeroTentativas == (numeroTentativasPossiveis - 1)) {
validaSenha = 2; // Mensagem de alerta pra bloqueio
temp.incrementarQtdTentativasLogin();
} else {
validaSenha = 3; // Senha inválida
temp.incrementarQtdTentativasLogin();
}
}
funcionarioDao.save(temp);
}