GARANTIR DESCONTO

Fórum Cadastro de Usuário com role Padrão #490220

26/08/2014

0

Boa tarde.
preciso criar uma tela de cadastro onde o usuário ira se cadastrar. esse usuário precisa ser com uma permissão (role) do tipo "USUARIO", alguém tem alguma ideia?

Entity
@Table(name = "usuario")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String login;
	private String senha;
	private String telefone;
	private String email;
	private String dataNascimento;
	private List<Grupo> grupos = new ArrayList<>();
	private List<HelpDesk> helpdesk = new ArrayList<>();
	private Local local;


@Entity
@Table(name = "grupo")
public class Grupo implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String descricao;


nessa tabela grupo eu ja tenho a roles cadastradas. entao na hora de salvar o usuario teria como atribuir a id da role ja?
Jardel Fuchter

Jardel Fuchter

Responder

Post mais votado

03/09/2014

Faça assim:

public Usuario salvar(Usuario usuario){

        //Adiciona o grupo padrão ao usuario antes de salvar
        List<Grupo> grupos = new ArrayList<Grupo>();
        grupos.add(buscarGrupo('padrao'));
        usuario.setGrupos(grupos);

        return usuarios.guardar(usuario);
    }


Outra coisa que percebi, no seu mapeamento está faltando bastante coisas, você só está usando o mapeamento da tabela mas falta colocar as anotações nas colunas.

Ronaldo Lanhellas

Ronaldo Lanhellas
Responder

Gostei + 1

Mais Posts

01/09/2014

Jardel Fuchter

Boa tarde.
preciso criar uma tela de cadastro onde o usuário ira se cadastrar. esse usuário precisa ser com uma permissão (role) do tipo "USUARIO", alguém tem alguma ideia?

Entity
@Table(name = "usuario")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String login;
	private String senha;
	private String telefone;
	private String email;
	private String dataNascimento;
	private List<Grupo> grupos = new ArrayList<>();
	private List<HelpDesk> helpdesk = new ArrayList<>();
	private Local local;


@Entity
@Table(name = "grupo")
public class Grupo implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String descricao;


nessa tabela grupo eu ja tenho a roles cadastradas. entao na hora de salvar o usuario teria como atribuir a id da role ja?

alguem?
Responder

Gostei + 0

01/09/2014

Jardel Fuchter

Boa tarde.
preciso criar uma tela de cadastro onde o usuário ira se cadastrar. esse usuário precisa ser com uma permissão (role) do tipo "USUARIO", alguém tem alguma ideia?

Entity
@Table(name = "usuario")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String login;
	private String senha;
	private String telefone;
	private String email;
	private String dataNascimento;
	private List<Grupo> grupos = new ArrayList<>();
	private List<HelpDesk> helpdesk = new ArrayList<>();
	private Local local;


@Entity
@Table(name = "grupo")
public class Grupo implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;
	private String descricao;


nessa tabela grupo eu ja tenho a roles cadastradas. entao na hora de salvar o usuario teria como atribuir a id da role ja?

alguem?
Responder

Gostei + 0

01/09/2014

Ronaldo Lanhellas

Você tem "1 milhão" de maneiras de fazer isso, vejamos algumas: (obs: Antes de começar, partimos do principio que você tem uma tabela chamada usuario_grupo que possui pelo menos os campos id_usuario e id_grupo).

1 - Você pode criar uma TRIGGER no AFTER INSERT da sua tabela "usuario". Toda vez que um novo usuário for inserido no banco, você pode fazer um INSERT na tabela "usuario_grupo" criando um relacionamento entre o usuario X e o grupo Y;

2 - Você pode optar por alterar o construtor da classe Usuario de forma que sempre que for criado uma novo usuário, o GRUPO X seja adicionado a ele;

3 - Você pode adicionar o GRUPO X ao novo Usuario Y, direto no CRUD que você deve estar usando;
Responder

Gostei + 0

02/09/2014

Jardel Fuchter

Bom dia, isso mesmo tenho uma tabela chamada usuario_grupo onde faz essa relação. só não estou conseguindo fazer com q ele adicione essa relação para mim.
Responder

Gostei + 0

02/09/2014

Jardel Fuchter

Bean

public String salvar() {
		
		this.usuario = cadastroUsuarioService.salvar(this.usuario);
		limpar();
		FacesUtil.addInfoMessage("Cadastrado efetuado com Sucesso!");
		
		return "/Login.xhtml"; 
				
	}


service

public Usuario salvar(Usuario usuario){
		return usuarios.guardar(usuario);
	}


Dao

public Usuario guardar(Usuario usuario) {
		EntityTransaction trx = manager.getTransaction();
		trx.begin();
		usuario = manager.merge(usuario);
		trx.commit();
		return usuario;
	}



quero que quando o usuario cadastra ja inclui o grupo com id 3 no banco
Responder

Gostei + 0

03/09/2014

Jardel Fuchter

alguém tem alguma ideia?
Responder

Gostei + 0

04/09/2014

Jardel Fuchter

Bom dia as anotações ja estao antes dos gets e sets. mais esse metodo da erro em 'padrao'

public Usuario salvar(Usuario usuario){
 
        //Adiciona o grupo padrão ao usuario antes de salvar
        List<Grupo> grupos = new ArrayList<Grupo>();
        grupos.add(buscarGrupo('padrao'));
        usuario.setGrupos(grupos);
 
        return usuarios.guardar(usuario);
    }

[img]http://arquivo.devmedia.com.br/forum/imagem/341138-20140904-080206.png[/img]
Responder

Gostei + 0

04/09/2014

Ronaldo Lanhellas

Bom dia as anotações ja estao antes dos gets e sets. mais esse metodo da erro em 'padrao'

public Usuario salvar(Usuario usuario){
 
        //Adiciona o grupo padrão ao usuario antes de salvar
        List<Grupo> grupos = new ArrayList<Grupo>();
        grupos.add(buscarGrupo('padrao'));
        usuario.setGrupos(grupos);
 
        return usuarios.guardar(usuario);
    }

[img]http://arquivo.devmedia.com.br/forum/imagem/341138-20140904-080206.png[/img]


Não não, o método "buscarGrupo('padrao')" foi apenas um exemplo, onde quis dizer que você deve implementar um método para buscar o grupo que deseja colocar como padrão.
Responder

Gostei + 0

09/09/2014

Jardel Fuchter

Bom dia consegui resolver, muito obrigado. so mais uma duvida tenho os grupos(roles) cadastrados no usuario so q nao consigo excluir ele.

o Botao e o dialog

<p:commandButton icon="ui-icon-trash" title="Excluir"
oncomplete="confirmacaoExclusao.show()" process="@this"
update=":frmCad:confirmacaoExclusaoDialog">
<f:setPropertyActionListener
target="#{cadastroUsuarioBean.grupoSelecionado}"
value="#" />
</p:commandButton>



<p:confirmDialog header="Exclusão do Grupo"
message="Tem certeza que deseja excluir o Grupo?"
widgetVar="confirmacaoExclusao" id="confirmacaoExclusaoDialog">
<p:button value="Não"
onclick="confirmacaoExclusao.hide(); return false;" />
<p:commandButton value="Sim"
oncomplete="confirmacaoExclusao.hide();"
action="#{cadastroUsuarioBean.removeGrupo}" process="@this"
update=":frmCad:gruposTable" />
</p:confirmDialog>

public void removeGrupo() {
usuario.getGrupos().remove(grupos);

}
Responder

Gostei + 0

09/09/2014

Ronaldo Lanhellas

Mas aparece algum erro ao tentar excluir o grupo ? Se sim, poste o erro aqui.
Responder

Gostei + 0

09/09/2014

Jardel Fuchter

Caused by: javax.el.PropertyNotFoundException: /usuarios/admin/CadastroUsuarioPermissoes.xhtml @77,30 target="#{cadastroUsuarioBean.grupoSelecionado}": Property 'grupoSelecionado' not found on type com.jf.controller.CadastroUsuarioBean$Proxy$_$$_WeldClientProxy
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:133)
	at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:211)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:775)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIData.broadcast(UIData.java:1106)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	... 50 more
Responder

Gostei + 0

09/09/2014

Ronaldo Lanhellas

O problema é que não existe a propriedade grupoSelecionado no bean Usuario, aqui neste trecho de código:

<f:setPropertyActionListener
target="#{cadastroUsuarioBean.grupoSelecionado}"
value="#" />
Responder

Gostei + 1

09/09/2014

Jardel Fuchter

deu certo ja tinha existe a propriedade grupoSelecionado no bean Usuario o problema q nao tinha os gets e sets dele. Muito obrigado pela ajuda.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar