Permissoes de usuarios Java EE Primefaces hibernate

6 respostas
J

Boa noite a todos(as), estou fazendo uma aplicação Java Web, usando o framework PrimeFaces, Eu consegui autenticar o usuario, porém não estou conseguindo criar permissoes de usuario, Gostaria que pelo atributo função ao selecionar administrador, esse usuario terá todas opções ou aparecerá nop menu as opções do menu para cadastrar,

Minha classe autorizador

package com.controleestoque.listener;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

import com.controleestoque.mb.LoginBean;

public class Autorizador implements PhaseListener {

	public void beforePhase(PhaseEvent event) {
	}

	public void afterPhase(PhaseEvent event) {
		FacesContext context = event.getFacesContext();
		if ("/login.xhtml".equals(context.getViewRoot().getViewId())) {
			return;
		}

		// Obtendo LoginBean da sessão
		LoginBean loginBean = context.getApplication().evaluateExpressionGet(context, "#{loginBean}", LoginBean.class);
		if (!loginBean.isUsuarioLogado()) {
			NavigationHandler handler = context.getApplication().getNavigationHandler();
			handler.handleNavigation(context, null, "login?facesredirect=true");
			context.renderResponse();
		}

	}

	public PhaseId getPhaseId() {
		return PhaseId.RESTORE_VIEW;
	}
}

Classe usuarioDAO

package com.controleestoque.dao;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.controleestoque.modelo.Usuario;

public class UsuarioDAO {
	public boolean existe(Usuario usuario) {
		EntityManager em = new JPAUtil().getEntityManager();

		em.getTransaction().begin();

		Query query = em.createQuery("from Usuario u where u.login = :pLogin and u.senha = :pSenha");

		query.setParameter("pLogin", usuario.getLogin());
		query.setParameter("pSenha", usuario.getSenha());

		boolean encontrado = !query.getResultList().isEmpty();

		em.getTransaction().commit();
		em.close();

		return encontrado;
	}
}

Minha classe Login Bean

package com.controleestoque.mb;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.controleestoque.dao.UsuarioDAO;
import com.controleestoque.modelo.Usuario;

@SessionScoped
@ManagedBean
public class LoginBean {
	private Usuario usuario = new Usuario();


	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String efetuaLogin() {
		UsuarioDAO dao = new UsuarioDAO();
		boolean loginValido = dao.existe(this.usuario);

		if (loginValido) {
			
			 return "baixa?faces-redirect=true";

		} else {
			this.usuario = new Usuario();
			
			return "login?faces-redirect=true";

		}
	}

	public boolean isUsuarioLogado() {
		return usuario.getLogin() != null;
	}

	public String logout() {
		usuario = new Usuario();
		return "login?faces-redirect=true";
	}
	
	
}

O meu usuario Bean

package com.controleestoque.mb;

import java.util.List;

import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;

import com.controleestoque.dao.DAO;
import com.controleestoque.modelo.Funcionario;
import com.controleestoque.modelo.Item;
import com.controleestoque.modelo.Produto;
import com.controleestoque.modelo.Usuario;

@ViewScoped
@ManagedBean
public class UsuarioBean {

	private Usuario usuario = new Usuario();
	private List<Usuario> usuarios;



	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public void refresh() {

		FacesContext context = FacesContext.getCurrentInstance();

		Application application = context.getApplication();

		javax.faces.application.ViewHandler viewHandler = application.getViewHandler();

		UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());

		context.setViewRoot(viewRoot);

		context.renderResponse();

	}

	public void grava() {
		DAO<Usuario> dao = new DAO<Usuario>(Usuario.class);
		if (usuario.getId() == null) {
			dao.adiciona(usuario);

			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuario foi cadastrado com sucesso!"));

		} else {
			dao.atualiza(usuario);

			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuario foi atualizado com sucesso!"));

		}

		this.usuario = new Usuario();
		this.usuarios = dao.listaTodos();
	}

	public List<Usuario> getUsuarios() {
		if (usuarios == null) {
			System.out.println("Carregando usuarios...");
			usuarios = new DAO<Usuario>(Usuario.class).listaTodos();
		}
		return usuarios;
	}

	public void remove(Usuario usuario) {

		DAO<Usuario> dao = new DAO<Usuario>(Usuario.class);

		dao.remove(usuario);
		this.usuarios = dao.listaTodos();
		refresh();
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuario foi removido com sucesso!"));
	}

	public void cancela() {
		this.usuario = new Usuario();

	}

	 
	

}

Minha classe usuario

package com.controleestoque.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

@Entity
public class Usuario {

	@Id
	@SequenceGenerator( 
			name = "usuario_id", sequenceName = "usuario_seq", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "usuario_id")
	private Long id;
	@Column(unique = true)
	private String login;
	private String senha;
	private String funcao;

	// getters e setters
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

}

Meu html da tela de login

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
		xmlns:p="http://primefaces.org/ui"
	>




<ui:composition template="/_template.xhtml">
	<ui:define name="corpo">


		<h2>Login no sistema</h2>

		<h:form id="formlogin">
		. <fieldset>
				<legend>Dados do Login</legend>
				<h:outputLabel value="Login:" />
				<p:inputText value="#{loginBean.usuario.login}" />
				<h:outputLabel value="Senha:" />
				<p:keyboard password="true" id="senha" value="#{loginBean.usuario.senha}" />
				<h:commandButton value="Efetuar Login"
					action="#{loginBean.efetuaLogin}" />
			</fieldset>
		</h:form>




	</ui:define>
</ui:composition>



</html>





Meu html para cadastro de usuario 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">

<ui:composition template="/_template.xhtml">
	<ui:define name="corpo">
		<h:form id="cadastro">


		

			<p:tabView>
				<p:tab title="Cadastrar Usuario">
					<p:fieldset legend="Dados do Usuario>


						<h:outputLabel value="Nome:" for="nome" />
						<p:inputMask value="#{usuarioBean.usuario.login}">
						</p:inputMask>
						<h:outputLabel value="Senha:" for="senha" />
						<p:inputMask value="#{usuarioBean.usuario.senha}">
						</p:inputMask>


						<h:outputLabel value="Função" for="funcao" />
						<p:selectOneMenu id="funcao" value="#{usuarioBean.usuario.funcao}">
							<f:selectItem itemLabel="Vendedor" itemValue="Vendedor">
							</f:selectItem>
							<f:selectItem itemLabel="Administrador" itemValue="Administrador">
							</f:selectItem>
						</p:selectOneMenu>






						<table border="0">
							<tr>
								<td><h:commandButton value="Gravar"
										action="#{usuarioBean.grava}">
										<f:ajax execute="@form" render=":lista :cadastro" />
									</h:commandButton></td>
								<td><h:commandButton value="Cancelar"
										rendered="#{not empty usuarioBean.usuario.id}"
										action="#{usuarioBean.cancela}"></h:commandButton></td>
							</tr>
						</table>
					</p:fieldset>
				</p:tab>
			</p:tabView>

			<h:messages />
		</h:form>




		<h:form id="lista">
		</h:form>





	</ui:define>
</ui:composition>


</html>

6 Respostas

A

Olá… você esta usando Hibernate?

D

Esse “não estou conseguindo” é o que? Dá erro? Não fez ainda e não sabe como começar? Precisa ser mais claro, dar mais detalhes (eu sei que colocou todo o código, mas isso, por si só, não é auto explicativo).

J

Eu não sei como fazer, tentei usar roles com Spring seguindo um tutorial, mas sumiu tudo sem da erro, obrigado pelo retorno, estou usando o hibernate, obrigado pelo retorno

J

Estou usando hibernate sim,

D

Você está usando Spring Security em teu projeto?

J

Tente usar mais não consegui, ai desisti de usar o Spring segurity,

Criado 4 de março de 2019
Ultima resposta 8 de mar. de 2019
Respostas 6
Participantes 3