= ACL = Este documento tem por finalidade demonstrar o funcionamento de ACLs (Access Control List). == ACL - Resource == ACL Resource (Recurso) é todo e qualquer informação que possa ser exposta a um usuário. Os recursos estão dispostos em uma estrutura de arvore, cada nó da arvore pode ser genéricos ou especifico os nos genéricos são definidos apenas por nome, e os nos específicos são definidos por nome e identificador separados pelo caractere = (igual). [[Image(wiki:acls:arvore.png, 100%?)]][[BR]] ^Figura 1: Exemplo arvore de recursos^ Cada recursos tem um nome unico dentro de sua seu ramo, mais pode ser duplicado em ramos diferentes.[[BR]] Cada resouce pode ou não estender as permissões de seu no pai. Na figura 1 por exemplo caso o recursos event=34 estende-se as permissões de seu pai calendar=1, qualquer usuário que tiver permissão para ler o calendar=1 também ira poder ler o event=34. Cada [[BR]] O identificador unico de resouce na arvore é chamado de DN, definido pelo caminha completo do resource na arvore. Na figura 1 por exemplo o recursos event=34 tem seu DN definido por expressoCalendar,calendar=1,event=34. === Atributos de um resource === Name : String que define o recursos como unico em seu ramo[[BR]] Extend : Bolean que define se o recurso extende as permisões de seu no pai. [[BR]] DN : String que define o recurso como unico na arvore == ACL - Rule == ACL Rule (Regras) é as regras permitivas que o usuario ou grupo tem sobre o recurso. cada regra é definida por uma letra do alfabeto, cada recurso e independente e livre para ter seu próprio conjunto de letras e significados, porem recomenda-se que se use a seguinte convenção: || Letra || Permissão || Descrição || || r || Leitura || Cliente pode visuarlizar o recurso || || w || Escrita || Cliente pode editar o recurso || || d || Remoção || Cliente pode remover o recurso || || c || Criação || Cliente pode criar um novo recurso filho || || s || Compartilhamento || Cliente pode compartilhar um recurso filho || == Metodos da classe == === isAllow === ===== Parametros ===== 1. $client = (Identificador do cliente) 2. $action = (Ação que o cliente quer execultar) 3. $resource = (Recurso alvo da ação) 4. $verifygroups = ( Caso o cliente tenha algum grupo definido no ldap ele verificara também as regras dos grupos ) ===== Camada ===== isAllow ( $cliente , $ação , $recurso , $verifyGroups = true ) [[BR]] ===== Workflow ===== [[Image(wiki:acls:workflow-isAllow.png, 100%?)]][[BR]] ^Figura 2: Workflow - isAllow^