Buscar se usuario tem permissão ou não

1 resposta
ArthurTurtle

Boa tarde galera do GUJ,

Eu tenho um problema em um projeto que eu estou desenvolvendo que é o seguinte:
Nesse projeto eu tenho um usuario que é administrador e outro que eh apenas um usuario normal, eu ja tenho o login e senha dele funcionando, oque eu queria saber é como eu faço para selecionar se o usuario é um admin ou não, pois tendo isso eu mostro ou não certos componetes da tela, entenderam?

Por enquanto eu tenho isso:

public void administrador(Aluno aluno){
		EntityManager em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();
		Query query = em
		.createQuery("from Aluno where admin = :pAdmin and login = :pUsuario");
		query.setParameter("pAdmin", "Sim");
		query.setParameter("pUsuario", aluno.getLogin());
		boolean moderacao= !query.getResultList().isEmpty();
		em.getTransaction().commit();
		em.close();
		
	}

esse codigo não funciona, se eu coloco no banco de dados, por exemplo:

SELECT *  FROM Aluno
WHERE admin =  "Sim" AND login =  "Mario"

ele retorna um usuario, era mais ou menos isso que eu queria, oque eu não sei é, como eu faço para pegar o login do usuario que esta na seção e jogar no parametro pUsuario e assim fazer a busca?

1 Resposta

Vanilson

ArthurTurtle, fiz esse codigo a pouco tempo para um projecto que estou a desenvolver e acho que poderá te ajudar, a ideia foi a seguinte:
Criar um método que retorna um modelo e tambem recebe como parâmetro um outro modelo, e quando eu percorrer o meu banco para ir buscar o usuário eu guardo no modelo o nome, senha e o perfil para ajudar a fazer o redirect, o codigo é este:

private final String login = "select *from utilizadores where nome_utilizador=? and senha_utilizador=?";

    public UtilizadorModelo login(UtilizadorModelo um) {
        try {
            conexao = Conexao.conectar();
            ps = conexao.prepareStatement(logIn);
            ps.setString(1, um.getNomeUtilizador());
            ps.setString(2, um.getSenhaUtilizador());
            rs = ps.executeQuery();
            if (rs.next()) {
                um.setNomeUtilizador(rs.getString("nome_utilizador"));
                um.setSenhaUtilizador(rs.getString("senha_utilizador"));
                um.setPerfilUtilizador(rs.getString("perfil_utilizador"));
                
                um.setLoginValido(true);
            } else if (!rs.next()) {
                um.setLoginValido(false);
            }
            
            rs.close();
            //stmt.close(); 
            ps.close();
            conexao.close();
        } catch (SQLException sqle) {
            JOptionPane.showMessageDialog(null, "Erro: Impossivel entrar no sistema");
        }
        return um;
    }

De seguida na tua servlet basta comparares o teu perfil que está no banco com uma string, o codigo é este:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        LoginDao ld = new LoginDao();
        UtilizadorModelo um = new UtilizadorModelo();
        
        um.setNomeUtilizador(request.getParameter("txtNome"));
        um.setSenhaUtilizador(request.getParameter("txtSenha"));
        
        um = ld.login(um);
        if(um.isValidLogin() && um.getPerfilUtilizador().equals("Administrador(a)")){
            HttpSession session = request.getSession(true); 
            session.setAttribute("sessaoActual",um);
            response.sendRedirect("Paginas/index.jsp");
            
        }
        else if(um.isValidLogin() && um.getPerfilUtilizador().equals("Funçionario(a)")){
            HttpSession session = request.getSession(true); 
            session.setAttribute("sessaoActual",um); 
            JOptionPane.showMessageDialog(null, "Funçionario");   
        }
        else{
            
            request.setAttribute("erroLogin", "Impossivel efectuar login");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
Criado 17 de junho de 2011
Ultima resposta 17 de jun. de 2011
Respostas 1
Participantes 2