Spring Security + Menu dinâmico JSF

15 respostas
A

E ae galera,

Estou trabalhando a parte de segurança de minha infra. Depois de uma pesquisada vi que o Spring Security parece ser algo interessante, até mesmo porque minha aplicação esta usando o Spring. O problema, é que o meu Menu é dinâico, ou seja, vem tudo do banco.

Sendo assim como vou controlar minhas ROLES utilizando a anotação dele:

<sec:ifAnyGranted roles="ROLE_ADMINISTRADOR, ROLE_GESTOR"> 
Menu...
</sec:ifAnyGranted>

Aqui está o meu menu:

<div class="headerContentCenter">
      <p:menubar id="menuPrincipal"  model="#{menuController.menuModel}"/>
    </div>

15 Respostas

D

Amigo, eu tambem utilizo em meus projetos o Spring Secutiry, mas… quando faço meu menu dinamico com informações do banco, tenho um MB que contem todas as permissoes do usuario, e as coloco no Rendered dos meus atributos, ou em algum outro tipo de controle. Tendesse?

V

darksteel3000 você que trabalha com menu dinâmico já se deparou com um probleminha desse ?

http://www.guj.com.br/java/298041-tamanho-do-submenu-e-menuitem---primefaces

V

lembrando que você trabalha com menu dinamico sem o uso do spring, é só usar consulta normal do banco, carregar uma lista e fazer a mágica rs.

A

E ae Valeio, valeu pela participação. Abri o link que você passou, eu acho que nesse caso teria dois caminhos a seguir,
ou limitar os caracteres no banco de dados ou trabalhar no CSS do componente aumentando a largura de seu menu.

Pode ser que você já tentou isso, mas assim, esses seriam os caminhos que eu pensaria em seguir.

A

E ae darksteel3000, sim deu para entender.
Eu dei uma pesquisada aqui, seria algo do tipo dar um setRenderedType([sintaxe ROLE]) no menu quando crio ele dinamicamente no MB?

V

aprendiz.devel obrigado pela resposta. Já está limitado no banco em 30 caracteres e menos que isso não quero botar rs. Sobre mudar o css do componente, como faço isso ?

V

na verdade tem como posta o css aumento o campo do SubMenu e MenuItem e como alterar no meu xhtml, pq de css eu não entendo quase nada rs.

A

Da pra criar um arquivo do tipo CSS no projeto WEB e referenciar ele na página do menu, ficaria algo assim:

<h:head>
    <link type="text/css" rel="stylesheet" href="#{request.contextPath}/resources/theme/css/arquivo.css" />
  </h:head>

Aí depois, dentro do CSS você define novas regras para o seu componente, algo assim:

.styleMenuTransparent{
  background-color: transparent !important;  /* cor de fundo */
  background: transparent!important;  /* cor de fundo*/
  border: transparent!important; /* bordas*/
  color: white; /* cor do texto */

/*aqui você coloca uma regra para aumentar a largura do seu componente*/
}

Aí no seu componente você só referencia aquela classe criada no CSS, assim:

<p:menubar id="menuPrincipal"  model="#{menuController.menuModel}" styleClass="styleMenuTransparent" autoDisplay="false"/>

Já adiantando, é um pouco complicadinho acertar as alterações no CSS, tem que abrir pelo chrome ou firebug e identificar o componente certo que tem que ser alterado. Em alguns casos sobrescrever o CSS, algo assim:

.styleMenuTransparent .ui-widget-content .ui-menuitem-text{
  color: black!important; /* cores submenus preta*/
}

Espero ter ajudado amigo.

V

Verei, quero ver é eu acertar o atributo do componente rsrs.

A

Fiz um teste aqui, você utiliza o menuBar, certo?
Faz assim, cria o arquivo CSS e referencia ele na sua página que está o menu, igual eu mostrei ali em cima. Então adiciona isso no CSS

.styleMenuNovo .ui-widget-content{
  width: 250px!important;
}

No seu menu, adiciona styleClass=“styleMenuNovo”, assim:

<p:menubar id="menuPrincipal"  model="#{menuController.menuModel}" styleClass="styleMenuNovo" autoDisplay="false"/>

Aqui funcionou, ele aumentou a largura do menu.

D

Acho q ja foi solucionado. :slight_smile:

V

Vou ver em casa hoje meio dia, ontem não deu pra fazer a noite. Mais tarde posto o resultado.

V

Funcionou!! Muito obrigado, você é o cara rsrs :smiley:

P

Olá amigos, gostaria de pedir a ajuda para vcs… Estou com o mesmo problema do Valeio Bezerra, testei aqui o que o aprendiz.devel disse e funcionou!!!

Porém, eu gostaria de saber se seria possivel eu fazer isso apenas para um submenu, ou restringir, de acordo com o tamanho da label do item do menu.

Por exemplo, no meu menubar, tenho um submenu com alguns menuitens grandes, o que faz eu precisar aumentar a largura dele… porém, no mesmo menubar, tenho submenus com menuitens curtos, dai ele fica enorme, sobrando um grande espaço em branco.

Tem como fazer isso?
Agradeço desde já!!

C

pcsantana:
Olá amigos, gostaria de pedir a ajuda para vcs… Estou com o mesmo problema do Valeio Bezerra, testei aqui o que o aprendiz.devel disse e funcionou!!!

Porém, eu gostaria de saber se seria possivel eu fazer isso apenas para um submenu, ou restringir, de acordo com o tamanho da label do item do menu.

Por exemplo, no meu menubar, tenho um submenu com alguns menuitens grandes, o que faz eu precisar aumentar a largura dele… porém, no mesmo menubar, tenho submenus com menuitens curtos, dai ele fica enorme, sobrando um grande espaço em branco.

Tem como fazer isso?
Agradeço desde já!!

Olá pcsantana, você utiliza menu dinâmico? Se não utilizar, basta fazer o mesmo para o submenu que quer alterar o tamanho. Utilize o firefox ou chrome para identificar o CSS do componente que define o tamanho, sobrescreva ele em seu arquivo CSS e chame ele no seu componente com o styleclass, isso deve resolver.

Criado 18 de abril de 2013
Ultima resposta 13 de mai. de 2013
Respostas 15
Participantes 5