%@ page import="java.sql.*,java.util.*,java.security.*,sun.misc.*" session="false"%>
<%
/*
ESTA PAGINA NAO EXIGE QUE SEJA AUTENTICADA
ESTA PAGINA EXECUTA FUNCOES DE VALIDACAO QUE CRIAM OS DADOS NECESSARIOS
PARA QUE AS PAGINAS POSTERIORES POSSAM SER USADAS ATRAVES DE AUTENTICACAO
*/
/*
a pagina de login (esta) coloca na sessao o tipo de usuario.
isto eh necessario para a criacao de menus personalizados para cada tipo de usuario
*/
// Conexao com RESIN
Connection con = com.caucho.sql.DBPool.getPool("recursos_ti_gov").getConnection();
// >>>
Statement stmt;
stmt=con.createStatement();
ResultSet rs = null;
String queryInsert= new String();
String query= new String();
%>
<%
String idUser = new String(); // id do usuario . sera utilizado pra atualizar o banco de dados.
String nome = new String(); // nome do usuario. sera utilizado na sessao para dar boas vindas para o usuario! :)
String login = new String();// email veio do form . o email eh o login do usuario
String senha = new String(); // senha veio do form
String hashLocal = new String(); // hash da senha q veio do form
String hashDB = new String(); // hash armazenado no banco de dados. eh utilizada para comparar com o hash gerado na autenticacao
boolean multiusuario = false; // usuario nao eh multiusuario por default
Integer tipoTemp = null;
String tipoParaSessao = null; // tipo do usuario . importante para fazer o encaminhanto para o menu correto. eh obtida da col tp_usuario tabela usuario
int tipo = 0; // para ser usado nesta pagina. o tipo para sessao eh porque putValue da session soh aceita string
String sessionID = new String(); // session criada caso usuario seja validado. sera incluida na coluna sessionID da tabela usuario
// nota: a session sera sempre atualizada do banco de dados toda vez que o usuario tiver sucesso na autenticacao.
// o valor inicial da sessionID no banco de dados eh nulo, pois na aprovacao do pre-cadastro eh feita a validacao e insercao de todas as colunas
// da tabela usuario.
// o hash armazenado na tabela usuario , foi inicialmente carregado atraves de uma senha inicial que o sistema gerou quando efetuou a
// aprovacao do usuario
%>
<%
// parametros vindos do formulario da pagina formulario_login.jsp
login=request.getParameter("email");
senha=request.getParameter("senha");
%>
<%
// verifica se parametros sao validos
boolean continuar = false;
boolean achouEmail = false;
boolean hashesIguais = false;
if ( (login!=null)&&(senha!=null) )
{
if ( (login.length()>5)&&(senha.length()==8)) // o usuario digitou um email e entrou com a senha com tamanho de 8 caracteres
{
continuar=true;
}
}
if (continuar)
{
// verifica se email existe
// retorna hs_senha, id_usuario, nm_usuario e tp_usuario
query = "select id_usuario,nome_do_usuario,hash_senha_do_usuario,tipo_de_usuario,multiusuario_usuario from usuario where situacao_do_usuario='n' AND email_do_usuario='"+login+"'"; //verifica se email existe
rs= stmt.executeQuery(query); //pesquisa por email do usuario #####################
achouEmail = rs.next();
if (achouEmail)
{
idUser = rs.getString("id_usuario");
nome = rs.getString("nome_do_usuario");
hashDB = rs.getString("hash_senha_do_usuario");
tipoTemp = Integer.valueOf(rs.getString("tipo_de_usuario"));
multiusuario = rs.getBoolean("multiusuario_usuario"); // 1=true, 0=false
tipo = tipoTemp.intValue();
tipoParaSessao = tipoTemp.toString();
// gera hash da senha q veio do form
byte[] inputBytes = senha.getBytes("UTF8");
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(inputBytes);
byte[] digest = md5.digest();
BASE64Encoder encoder = new BASE64Encoder();
hashLocal = encoder.encode(digest);
// compara os hashes
if ( hashLocal.compareTo(hashDB)==0 )
{
//hashes sao iguais
hashesIguais =true;
}
}
%>
<% } // if continuar
else
{
con.close();
%>
Validacao de login e senha do usuario
Esta página cria a sessao do usuario e encaminha para a sua pagina de menu
<%=hashesIguais%>
<% if (hashesIguais) //hashesIguais { // cria sessao para usuario e armazena no banco de dados na tabela usuario de acordo com o id usuario HttpSession session = request.getSession(true); session.putValue("idUser",idUser); session.putValue("tipo",tipoParaSessao); session.putValue("nome",nome); query = "UPDATE usuario SET "+ " sessao_do_usuario='"+session.getId()+"' "+ //valor da session id em string " where id_usuario=" + idUser; stmt.executeUpdate(query); %> <% // redireciona usuario para menu admin,consultor ou usuario switch(tipo) { case 1: //admin %><%
} // if hashes iguais
else
{
con.close();
%>
<% if (!achouEmail) { %>