A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Controle de acesso no Joomla 1.5

Dom

4

Mai

2008


20:40

(29 votos, média 3.97 de 5) 


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).

info 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".

info 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.

Informações adicionais