Informática Numaboa - Tutoriais e Programação
Controle de acesso no Joomla 1.5
Dom 4 Mai 2008 20:40 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:39
- Autor: vovó Vicki
- Acessos: 18507
Nomeando Objetos de Acesso
O phpGACL identifica unicamente cada um dos Objetos de Acesso (AROs, AXOs e ACOs) com uma combinação de duas palavras-chave e o tipo de Objeto de Acesso. Assim, o trio (tipo de Objeto de Acesso, Seção, Valor) identifica unicamente qualquer Objeto de Acesso.
- O primeiro elemento do trio é o tipo de Objeto de Acesso (ARO, AXO ou ACO).
- O segundo elemento do trio, chamado de Seção (Section), é uma string definida pelo usuário que dá nome à categoria geral do Objeto de Acesso. Múltiplos Objetos de Acesso podem compartilhar o mesmo nome de Seção. O nome da Seção deve ser curto, mas ao mesmo tempo descritivo (é melhor ter seções chamadas de sistema, andares ou pessoas do que chamadas de a, b e c).
As Seções são armazenadas num espaço de nomes linear; elas não podem ser aninhadas como os Grupos. Seções nada têm a ver com Grupos ou com árvores ARO/AXO - elas são apenas um mecanismo para ajudar a manter um grande número de Objetos de Acesso. - O terceiro elemento do trio é um nome definido pelo usuário para o Objeto de Acesso e é chamado de Valor (Value). Um valor não pode conter espaços (apenas os nomes das Seções podem).
Os nomes das Seções e os Valores são sensíveis a maiúsculas/minúsculas. Por exemplo, a seção "Sistema" é diferente da seção "sistema".
O motivo para usar nomes para seções e valores é para torná-los mais compreensíveis. O que você acha mais fácil de entender?
acl_check('sistema', 'login', 'usuarios', 'ana_maria'); ou acl_check(10, 21004, 15, 20304);
Exemplo de "Seções > Valores" para ACOs
- "Recintos > Comando"
- "Recintos > Máquinas"
- "Andares > Primeiro"
- "Andares > Segundo"
Exemplos de "Seções > Valores" para AROs
- "Comando > Maremoto"
- "Marujos > Zé_Arruela"
- "Aves > Papagaio"
Exemplo de uso
- acl_check( aco_section, aco_value, aro_section, aro_value );
- acl_check( 'Recintos', 'Comando', 'Aves', 'Papagaio' );
Adicionando Seções
Antes de adicionar um novo Objeto de Acesso é preciso definir sua Seção. Para adicionar uma nova seção use a função add_object_section().
add_object_section ( string NOME, // Uma breve descrição do que é a Seção (por exemplo, "A sala de comando"). string VALOR, // O nome da Seção (por exemplo, "Comando"). int ORDEM, // Um valor arbitrário que afeta a ordem de apresentação desta seção na UI. bool OCULTA, // Se deve aparecer ou não na UI (TRUE significa que não é mostrada). string TIPO) // Tipo de Objeto de Acesso ("aco", "aro" ou "axo")
O capitão Maremoto criou três tipos de ARO: "Comando", "Marujos" e "Aves":
Princesa dos Mares | |- Grupo Comando [ALLOW: ALL] | |- "Comando > Maremoto" | |- "Comando > Barrica" [DENY: Despensa] | |- Grupo Tripulação [ALLOW: Refeitório] |- Cozinha [ALLOW: Despensa] | |- "Marujos > Zé_do_Boné" | |- "Marujos > Margarida" |- "Marujos > Zé_Arruela" [ALLOW: Máquinas] |- "Aves > Papagaio" [ALLOW: Comando]
As seções são apenas uma forma de categorizar Objetos de Acesso, para fazer com que a interface do usuário (UI) seja mais amigável e para tornar o código do acl_check() mais legível. Elas não afetam o modo como o phpGACL determina o acesso a um objeto.