Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:09:10
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
Vamos começar a organizar uma lista de pendências (TO DO List) do Mentawai.
Uma primeira demanda que tenho é o suporte a tag html TEXTAREA, já estou analisando o código para verificar como seria possível adicionar essa funcionalidade. Porém ainda não consegui mapear todas as questões que precisam ser tratadas.
Uma primeira dúvida que tenho é porque na classe Input existem estas duas linhas:
if (value != null) sb.append(" value=\"").append(value).append("\"");
else if (this.value != null) sb.append(" value=\"").append(this.value).append("\"");
Elas não são redundantes?
Essa nova tag deverá ser do tipo <mtw:textarea></mtw:textarea> ou <mtw:textarea />?
Outra questão conforme, conversado na última reunião do RioJUG, seria a criação de uma conceito de Autorização além da atual Autenticação. A minha sugestão seria a adição na tag <mtw:requiresAuthentication /> de um atributo onde fosse passado uma “chave”, a criação de um filtro que também tive essa “chave” como parâmetro, então no framework teria uma interface disponível para implementação que receberia o Objeto armazenado pelo setUserSession() e essa “chave” e este deveria retornar sucesso ou erro, caso o usuário tivesse a devida autorização (permissão) ou não, respectivamente.
Para começar a lista de pendências, são essas as minhas sugestões. Vamos completá-la, alterá-la e priorizá-la.
TO DO List
----------
- Tag para suporte a TEXTAREA
- Suporte a Autorização
|
André Delorme |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:22:56
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
Joined: 20/07/2005 08:22:57
Messages: 52
Offline
|
Foi falado aqui no forum também (se eu não me engano foi vc mesmo) falando sobre o HIDDEN. Já foi implementado? Caso contrário é legal colocar no TO DO List.
|
Glaucio Guerra |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:29:02
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Andre wrote:
Code:
if (value != null) sb.append(" value=\"").append(value).append("\"");
else if (this.value != null) sb.append(" value=\"").append(this.value).append("\"");
Repare que this.value não é igual a value. Basicamente essa linha de código te permite setar um valor padrão na tag através do atributo value. Mas ele só é usado se não há outro valor para ser mostrado.
Falando agora de TextArea:
Deve ser uma tag com body, já que vc pode querer passar algum text default ali dentro. Entretanto nada te impede de usar ela sem body <mtw:textarea />, pois ela sempre vai cuspir a versão certa, ou seja, com corpo.
Eu já tenho algo mais ou menos pronto aqui para a TextArea e posso te mostrar para a gente trocar uma idéias.
Quanto a autorização acho que sua idéia é muito boa. Eu pensei como vc num esquema de ROLES, ou seja, vc cria roles como admin, guest, manager, etc
Daí quando vc coloca o cara na sessão, vc tem que indicar qual é o role dele. Talvez setá-lo com uma função setUserRole(String role) e aí a tag requiresAuthentication poderia ter um atributo roles="admin, manager" onde vc indicaria quem pode entrar ali.
E tb precisariamos de um filtro para checar os roles durante o acesso a action.
Vale pensar se esses Roles seriam simples strings ou algo hierarquizado. Acho que strings fica mais claro e simples o que acha?
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:29:22
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
Já foi implementado, está no CVS.
|
André Delorme |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:30:00
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Glaucio wrote:
Foi falado aqui no forum também (se eu não me engano foi vc mesmo) falando sobre o HIDDEN. Já foi implementado? Caso contrário é legal colocar no TO DO List.
Já foi !!! Entra na versão 1.1 que vai ser lançada ainda essa semana.
A versão 1.1 está bem legal, principalmente com o suporte a IoC bem simples. Claro que isso só vai usar quem quiser e precisar. Quem não quiser pode ignorar sem problemas.
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 12:34:50
|
Glaucio
![[Avatar]](/images/avatar/c51ce410c124a10e0db5e4b97fc2af39.jpg)
Joined: 20/07/2005 08:22:57
Messages: 52
Offline
|
Interessante esse lance de Role.
Então utilizando string seria:<mtw:requiresAuthentication role="Admin" /> ??
|
Glaucio Guerra |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 13:08:38
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Colquei no CVS o TextArea.java, que é o tag do TEXTAREA.
Não testei!!! Dá uma olhada André e veja se te agrada.
Vou almoçar agora...
Modifiquei tb o taglib.tld.
Segue em anexo...
Reparem que eu tive que modificar tb o PrintTag !!! (Logo não vai compilar se vc apenas jogar o TextArea.java no seu projeto)
Filename |
taglib.tld |
Download
|
Description |
Tld com a nova tag. |
Filesize |
15 Kbytes
|
Downloaded: |
613 time(s) |
Filename |
TextArea.java |
Download
|
Description |
Código da nova tag. |
Filesize |
2 Kbytes
|
Downloaded: |
429 time(s) |
Filename |
mentawai.jar |
Download
|
Description |
Built com o TextArea |
Filesize |
164 Kbytes
|
Downloaded: |
405 time(s) |
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 13:11:07
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
Entendi o porque do IF, a preferência é que a tag traga o valor atual.
Acredito que a utilização de Roles seja uma boa idéia. Não acredito que precise em algo hierarquizado, poderiam sim, serem utilizadas Strings. Da forma que sugeri, novos Roles ou Chaves seriam criadas sob demanda.
Não sei se é uma boa colocar as Roles do usuário na seção, caso o sistema fosse mais complexo o usuário poderia ter diversos Roles.
Um prática que adoto para controle de autorização em sistemas Web, é a criação de 3 entidades Usuário, Grupo e Permissão, com relacionamento NxN entre Usuário e Grupo; e também Grupo e Permissão. Para cada nova funcionalidade (por exemplo: página JSP) que implemento coloco no inicio da página a chamada a uma função que recebe a identificação da permissão necessária para acessá-la e a identificação do usuário atualmente logado. E a função verifica se o usuário está associado a algum grupo, que por sua vez está relacionado à permissão.
Como isso, há uma flexibilidade muito grande. E único suporte que o framework precisaria prestar é associar a cada funcionalidade um ID de permissão.
E fica a cargo do desenvolvedor criar, assim como eu, essa entidade Grupo ou não, criar outras entidades como sub-grupos para um controle de permissão mais complexo, utilizar grupos hierarquizados. As possibilidades são ilimitadas e o suporte do framework o mesmo.
Espero ter sido claro, se não, estou a disposição para explicações.
|
André Delorme |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 17:46:02
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Fala André,
Estou acabando aqui. Para ter certeza que eu entendi a sua idéia, me dá alguns exemplos de grupos e permissões.
Grupos seriam: Managers, Users, Administrators, etc
E permissões seriam: modify, read, delete, etc
É isso ????????
Daí teríamos:
<mtw:requiresAuthentication permission="delete" />
É isso ???
Não entendi muito bem pra que que serve a permissão ???
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 18:13:08
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
Esse conceito é bem abrangente mesmo. Lembrando que os Grupos não seriam responsabilidade do Mentawai, apenas as permissões. Talvez estejamos falando quase a mesma coisa.
Alguns exemplos:
Grupos: Administrador, Imprensa.
Permissões: Administrar Usuários, Administrar Produtos e Administrar Notícias.
Onde o grupo Administrador teria todas as permissões e o grupo Imprensa somente de Administrar Notícias.
É claro que as “chaves” das permissões seriam adm_usr, adm_prod e adm_not; ou ainda usrs, produtos e notícias; e em último caso 1, 2 e 3.
E mais, nesse caso, todas as funcionalidades relativas a Notícias, por exemplo, teriam a mesma identificação de permissão.
Grupos: Gestores e Usuários
Permissões: incluir matérias, alterar matérias, excluir matérias
Onde os Gestores teriam as 3 permissões, mas os usuários comuns apenas direito de inclusão.
Grupos: Cliente X e Cliente Y
Permissões: Dados Financeiros do cliente X (financ_x), Dados financeiros do cliente Y (financ_y)
Aproveito aqui para adicionar mais uma consideração, também seria necessária a adição de um tag como <mtw:hasAutorization key=”xxx”></mtw:hasAutorization>, onde os dados só seriam apresentados para os usuários que tivessem essas permissão, ele deveria ser usado para envolver, por exemplo, um link para acessar uma página que é restrita a usuários com direto a permissão: xxx.
Vou tentar redigir com mais calma uma descrição completa, de como seria a para um usuário que utilizasse o Mentawai, essa parte de Autorização.
|
André Delorme |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 18:15:58
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Acho que já entendi tudo André !!!!
Por ser N por N vc pode autorizar tanto por Grupo quanto por permissão. De um lado ou de outro.
A tag que vc falou faz todo o sentido...
Estou acabando aqui...
Tags:
<mtw:requiresAuthentication groups="admins, managers" />
<mtw:requiresAuthentication permission="delete, read" />
<mtw:hasAuthorization groups="admins" />
<mtw:hasAuthorization permission="delete" />
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 18:35:33
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
As TAGs seriam essas mesmas. Porém não ficou claro para mim, se essas roles e permissions ficariam armazenadas na session. Se não, de que forma a verificação seria feita.
Quanto ao TEXTAREA, já coloquei aqui, e aparentemente está tudo certo. Só tenho uma pequena consideração. Como o campo pode ser longo, talvez fosse interessante já iniciar o StringBuffer interno da classe com uma capacidade maior que 200, talvez 2000, ou até 20000.
|
André Delorme |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 19:07:56
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Estou terminando o org.mentawai.authorization.Group e o org.mentawai.authorization.GroupManager.
O GroupManager vai ficar no escope da applicação (ApplicationContext) e vai ser acessado pelas tags e filtros.
Acho que vai ficar legal...
Vc vai configurar os Groups/Permissões no ApplicationManager.java. Nada te impede depois de fazer algo para puxar isso do banco ou de um arquivo. Não vejo muito problema em manter hardcoded ali no ApplicationManager, mas fica a critério do projeto em questao.
Quanto ao TextArea vou alterar !!! Boa observação...
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/07/2005 21:43:45
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Na verdade acho que os tags devem ser separados do tag de autenticação, para não confundir as bolas.
Code:
<mtw:requiresAuthorization groups="admins, managers" />
<mtw:requiresAuthorization permissions="delete, read" />
<!-- Nao faz muito sentido, mas se o cara quiser ele vai checar por ambas as condições (AND) -->
<mtw:requiresAuthorization groups"admins" permissions="read" />
<mtw:isAuthorized groups="admins, manager">
</mtw:isAuthorized>
<mtw:isAuthorized permissions="read, write">
</mtw:isAuthorized>
<!-- Nao faz muito sentido, mas se o cara quiser ele vai checar por ambas as condições (AND) -->
<mtw:isAuthorized permissions="read, write" groups="admins, manager">
</mtw:isAuthorized>
|
Sergio Oliveira
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/07/2005 09:11:31
|
andredelorme
Joined: 20/07/2005 11:41:46
Messages: 51
Offline
|
Acho que as TAGs seriam estas mesmas, porém agora eu fiquei na dúvida. Para vocês qual seria a diferença entre groups e permissions?
Ainda não está claro que tipo de configuração seria feita no ApplicationManager, mas vou aguardar você terminar essa nova funcionalidade para analisar melhor.
|
André Delorme |
|
 |
|