...
Bem-Vindo ao projeto Magoo, um novo conceito para gerenciamento de permissões em aplicações java web e desktop
Links Importantes
- Controle de pendências, bugs e requisição de funcionalidades : http://3layer.no-ip.info:6666/jira/browse/MAGOO

- Grupo de discussão e Documentos de Projeto : http://groups.google.com/group/treelayer-magoo

Informações gerais
...
De forma geral, o modelo de permissões e usuários de uma aplicação é intrinsicamente ligado ao seu código-fonte. Para dar um exemplo, considere esse fragmento de código em uma pseudo-linguagem:
| Sem Formato |
|---|
<ui:menu> <ui:menuItem>File</ui:menuItem> <ui:menuItem>Edit</ui:menuItem> <if:$user.role="owner"> <ui:menuItem>Tools</ui:menuItem> </if> <ui:menuItem enabled='<%=user.role=="admin"%>'>Configuration</ui:menuItem> </ui:menu> |
...
Foi pensando nesse cenário que o Magoo foi projetado. A idéia básica por trás do Magoo é retirar totalmente do código da aplicação qualquer referência ao mecanismo de controle de acesso. Assim, o código da aplicacão seria simplesmente isso:
| Sem Formato |
|---|
<ui:menu> <ui:menuItem>File</ui:menuItem> <ui:menuItem>Edit</ui:menuItem> <ui:menuItem>Tools</ui:menuItem> <ui:menuItem>Configuration</ui:menuItem> </ui:menu> |
...
E para demonstrar isso, consideramos um exemplo fictício de configuração do Magoo, onde as permissões, perfis e elementos de tela são armazenados em um arquivo de texto plano, como:
| Sem Formato |
|---|
* : disabled : //ui/menuItem[Configuration] * : invisible : //ui/menuItem[Tools] admin : enabled : //ui/menuItem[Configuration] owner : visible : //ui/menuItem[Tools] |
Nesse arquivo, as duas primeiras linhas referem-se a todos (asterisco) os perfis, e indicam que eles têm o menu "Configuration" desabilitado e o menu "Tools" invisível. Logo abaixo, as duas últimas linhas denotam que o administrador tem o menu "Configuration" habilitado e que o perfil "owner" tem o menu "Tools" visível.
...
| Sem Formato |
|---|
* except(admin) : disabled : //ui/menuItem[Configuration] * except(owner) : invisible : //ui/menuItem[Tools] |
...