Joomla 1.6, 1.7 e 2.5: visão geral dos conceitos de ACL

ACL Joomla

Uma das características mais poderosas da versão 1.6 e posteriores do é a Lista de Controle de Acesso (Access Control Lists – ACL). Refere-se a quem tem permissão para fazer o que no site, incluindo ler, criar, editar, apagar ou fazer login, entre outras coisas.

Este artigo é uma tradução do orginal em inglês escrito por Jen Kramer para a Joomla! Community Magazine.

Este artigo é baseado em dois outros escritos originalmente para o Joomla 1.6 e foi escrito em dezembro de 2011, antes do lançamento do Joomla 2.5. No entanto, entendeu-se que os conceitos do ACL não mudarão entre as versões do sistema, mesmo que pequenas mudanças na interface ocorram.

Muitos acham que ACL tem a ver somente com a área pública de um site. Por exemplo, quando eu entro no site, quais artigos que tenho à minha disposição? E se alguém se conecta ao site, eles vêem os mesmos artigos ou vêem outros?

No entanto, ACL também tem a ver com quem pode criar, editar e excluir conteúdo, quem pode publicar e despublicar conteúdo, quem pode entrar no front-end ou back-end do site e que pode fazer alterações em determinados componentes, módulos, e modelos.

Só porque você pode, não significa que você deva! ACL é complexa e leva algum tempo para entender exatamente como funciona. Para muitos sites, talvez até a maioria deles, não será necessário nada além da configuração padrão do Joomla. No entanto, se você está desenvolvendo um projeto maior, uma boa configuração da ACL pode vir a calhar.

Exemplos onde é bom utilizar a ACL:

  • Um site escolar, onde os pais, professores, estudantes e ao público veem conteúdos diferente;
  • Um grande site com muitos colaboradores, onde não se quer que as pessoas mudem conteúdo uns dos outros;
  • Um site onde existem usuários que devem ser capazes de criar e editar conteúdo para o site, mas não podem necessariamente publicar conteúdo. Ou ainda tem-se dois ou mais grupos de usuários que precisam criar e editar conteúdos pertencentes a diferentes áreas do site.
  • Você gostaria que determinado usuário possa, entrar no back-end do site, acessar  um componente específico e não tocar em mais nada.

ACL também podem ser usada para construir uma interface de administrador mais simples, eliminando as áreas em que um cliente não precise ver ao fazer alterações no site. No Joomla 1.5,  podia-se atribuir a um usuário o nível Gerente, mas este seria capaz de editar qualquer componente, conteúdo do site e fazer alterações em menus. A partir do Joomla 1.6, melhorou-se a ACL, de forma que um usuário possa acessar apenas categorias específicas de artigos (ou artigos específicos), componentes específicos (ou nenhum) e assim por diante. Via ACL, pode-se melhorar a usabilidade da área do administrador para o usuário.

ACL no Joomla 1.5

Joomla 1.5 tem um sistema limitado e fixo de ACL. Se você já trabalhou com esta versão, percebeu que se pode definir um item de menu ou artigo para ser visto pelo público, usuários registrados ou “especial” (autores e acima). Da mesma forma, você provavelmente sabe que os usuários registrados não podem entrar no back-end de um site Joomla, mas um super administrador pode. A ACL do Joomla 1.5 é hierárquica, o que significa que cada grupo de usuário herda as permissões dos grupos anterior.

Uma explicação completa dos grupos na versão 1.5 pode ser encontrada no site brian.teeman.net. Os grupos incluem público, registrado, autor, editor, gerente, administrador e super administrador.

Os níveis de acesso na versão 1.5 ‘s são público, registrado e especial. Público indica que qualquer um pode ver o conteúdo. Registrado indica que aqueles com acesso de usuário registrado e acima pode ver o conteúdo. Especial é para grupos de autores e acima somente. Não há nenhuma maneira de adicionar níveis adicionais de acesso, nem há qualquer forma de segmentar os grupos de usuários.

ACL no Joomla 1.6 e posteriores: visão geral

A ACL no Joomla 1.6+ não é necessariamente hierárquica. Pode-se configurar grupos com quaisquer permissões que se deseja. Essas permissões são herdadas dos pais, no caso de grupos, mas elas não são herdadas no caso de níveis de acesso. No mínimo, todos os grupos de usuários são filhas do grupo Publico.

Há quatro aspectos para o sistema ACL no Joomla 1.6+. Estes incluem o usuário, o grupo, as permissões do sistema e níveis de acesso. Tenho estas representados no diagrama a seguir para descrever seu relacionamento e vou ver cada uma em detalhe.

Diagrama ACL

Usuário

Esta é o mais fácil de entender – é você ou alguém visitando o site. Um usuário não precisa ter uma conta para ser considerado um usuário do site. Este seria considerado um usuário público. Os usuários individuais podem ser atribuídos a um ou vários grupos. Você não pode atribuir permissões do sistema diretamente aos usuários, estas são atribuídos ao grupo.

Permissões do sistema

Permissões do sistema são atribuídas ao grupo, não a usuários individuais. Se quiser permissões de sistema específicas para um único usuário, você precisa criar um grupo para este único usuário.

Permissões do sistema incluem:

  • Login do site: a capacidade de fazer login no site pela área pública (front-end);
  • Login de administrador: a capacidade de entrar no administrador (back-end) do site;
  • Acesso offline: quando o site é colocado em offline (em Configuração Global > Site), isso controla quem pode fazer login para ver o site;
  • Super Admin: privilégios administrativos(root), como a alteração de Configuração Global. Privilégios de Super Administrador substituem todas as outras configurações de ACL, dando a este grupo de usuários acesso completo a todos as funcionalidade do Joomla;
  • Componente de acesso: capacidade de ver áreas específicas no back-end (como menus, gerenciamento de artigos, gerenciamento de mídias, componentes, etc);
  • Criar: capacidade de criar novos conteúdos;
  • Apagar: capacidade de apagar (colocar no lixo) conteúdo;
  • Editar: capacidade de editar o conteúdo existente, que não é necessariamente do mesmo usuário;
  • Editar estado: a capacidade de alterar o estado entre publicado, não publicado, lixeira e arquivado;
  • Editar próprio: a capacidade do usuário editar seu próprio conteúdo, mas não o conteúdo dos outros.

As permissões do sistema são definidas em Site > Configuração Global, e em seguida clicando no link Permissões.

Permissões do sistema na Configuração Global

No grupo Gerente mostrado acima e em todos os grupos, exceto para o público, cada um dos dropdowns mostrados aqui tem três opções: Permitir, Negar e herdados. O grupo Público é o pai de todos os grupos abaixo. O dropdown do grupo Público tem três valores, que incluem Permitir, Negar e não definido.

  • Permitir algo é explicitamente autorizar ou permitir algo para um grupo específico.
  • Negar algo é explicitamente negar ou não permitirpara algo para um grupo específico.
  • Herdado é algo recebido de um grupo superior. Herdado não está disponível como uma opção para o grupo Público.
  • Não definido significa que a permissão ainda não foi configurada. Não definido somente está disponível para o grupo Público e apenas na Configuração Global.

Uma explicação completa de permissões de cada grupo de usuários é dada mais abaixo.

Uma nota sobre permissões de sistema

Quando as permissões do sistema são definidas ao nível da Configuração Global, são utilizadas em todo o site e por todas as áreas do site. Por exemplo, um Autor tem a permissão Criar atribuída globalmente. Este Autor pode criar um artigo em qualquer categoria no site. A permissão Criar também significa que podem criar uma weblink novo a partir da área pública do site, se o componente weblink está em uso. Você pode querer planejar com cuidado sobre onde as permissões são atribuídas no Joomla. Você não tem que definir a permissão Criar em Configuração Global se você quiser um grupo de usuários a ser capaz de criar artigos e categorias. Essa permissão também pode ser atribuida dentro das opções do Gerenciador de Artigos. Irei me aprofundar sobre como atribuir permissões em artigos posteriores.

Tudo sobre Negar

Você pode ser tentado a definir todos esses dropdowns especificamente como Permitir ou Negar para facilitar a leitura. No entanto, gostaria de recomendar que não faça isso.

Se Negar for definido nas permissões, mesmo que você defina um Permitir para um nível maior de grupo de usuário, o Negar do nível mais baixo seria herdado e poderia substituir o Permitir.

Por exemplo, se você definir as dropdowns do grupo Público como Negar para todos, não faz sentido nenhum ter outros grupos de nível maior! Todo mundo ia ser negado a fazer qualquer coisa no site para sempre com a exceção dos Super Usuários.

Grupo de Usuários

Um grupo de usuários (também chamados de grupos) compartilham as mesmas permissões. Usando os grupos do Joomla 1.5 como exemplo, o grupo Editor tem o direito de entrar pela área pública do site, criar novos artigos, editá-los no site, publicá-los ou despublicá-los. Qualquer um do grupo Editor tem as mesmas permissões para fazer as mesmas coisas.

A partir da versão 1.6, um usuário pode estar atribuído a vários grupos. Um usuário pode estar no grupo Editor, assim como no grupo Administrador, por exemplo.

Pode-se criar seus próprios grupos e atribuir-lhes o seu próprio conjunto de permissões do sistema. Estas são herdadas entre os grupos.

Um grupo pode ser criado por duas razões diferentes. Uma delas seria para visualizar o conteúdo na área pública do site. (Grupos de usuários são atribuídos aos níveis de acesso que permitem ver o conteúdo na área pública do site.) A outra seria especificar qual conteúdo que pode ser criado, editado, excluído, publicado, despublicado ou geridos por esse grupo.

Ao visitar o site, o usuário é considerado como pertencente ao grupo Público.

O grupo Público não pode ser excluído, mas todos os outros grupos podem. No entanto,  recomendo que você os mantenha, porque eles lhe dão um bom modelo de como funcionam as permissões herdadas.

Grupos padrão

Por padrão, Joomla 1.6 e posteriores vem configurado com os mesmos grupos que aparecem no Joomla 1.5. Os grupos e suas permissões de sistema são as seguintes:

  • Público (Public): Público pode ver o conteúdo na área pública do site que não necessita de login para ser vista. Para o grupo Público, por padrão, todos os valores são definidos como Não definido. Como se poderia esperar, os usuários públicos não estão autorizados a logar pela área pública do site, entre outras permissões. Eles não são explicitamente negados a fazer isso, no entanto – são negados porque não existe nenhuma permissão explícita.
  • Registrado (Registered): usuários Registrados podem entrar pela área público do site apenas. São “filhos” do grupo Público. A eles são atribuídos a permissão de login do Site.
  • Autor (Author): Autores podem criar seu próprio conteúdo por meio das permissões Criar e Editar PrópriosAutores são “filhos” do grupo Registrado.  Herdam a permissão para Acesso do Site de usuários Registrados.
  • Revisor (Editor): Os Revisores podem editar qualquer conteúdo do site através da permissão Editar. Os Revisor são “filhos” do grupo Autor. Também herdam as permissões de CriarEditar Próprios de Autores e a permissão de Acesso do Site de usuários Registrados.
  • Editor (Publisher): Editores podem publicar, despublicar, arquivar ou colocar no lixo conteúdo através da permissão Editar Estado. Os editores são “filhos” do grupo Revisor. Também herdam a permissão Editar de Revisor, o CriarEditar Próprios  de Autores e a permissão de Acesso do Site de usuários Registrados.
  • Gerente (Manager): Os gerentes são “filhos” do grupo Público, então todas as permissões previamente atribuídas a Registrados, Autor, Revisor, Editor não se aplicam a este grupo. Elas devem ser transferidas individualmente. Isso inclui Acesso do Site, Acesso da Admin, Acesso Offline, Criar, Apagar, Editar, Editar Estado e Editar Próprio.
  • Administrador (Administrator): administradores são capazes de editar e configurar as extensões através da permissão Componente de Acesso. Administradores são “filhos” do grupo Gerente, por isso herdam deste as permissões Acesso do Site, Acesso da Admin, Acesso Offline, Criar, Apagar, Editar, Editar Estado e Editar Próprio.
  • Super Usuários (Super Users): Super Usuários, anteriormente conhecidos como Super Administradores, são capazes de alterar a Configuração Global, bem como outras habilidades através da permissão Super AdminSuper Usuários também são “filhos” de Público. No entanto, eles têm apenas um conjunto de permissão: a permissão Super Admin que substitui todos as outras, de modo que o Super Usuário é capaz de realizar todas as funções.

Os grupos padrão e suas permissões aparecem na Configuração Global (em Site > Configuração Global > Permissões).

Nível de Acesso

Os níveis de acesso referem-se a quem pode ver o conteúdo na área pública do site. Essencialmente, isto equivale a permissão de leitura para qualquer um do site.

Historicamente, houve três níveis de acesso: Público (que qualquer um pode ver), Registrado (você deve estar logado para ver o conteúdo) ou Especiais (você deve estar logado como autor ou acima para ver o conteúdo).

Estes níveis de acesso ainda estão presentes na versão 1.6+ como configurações padrão, mas você também pode criar seus próprios níveis de acesso.

Os níveis de acesso não herdam permissões. Se um artigo está configurado para ser visto pelos editores apenas através de um nível de acesso personalizado, nem os Super Usuáros podem ver esse artigo. Deve-se atribuir aos super usuários fazerem parte do grupo Editor, a fim de que possam ver este artigo na área pública do site ou você deve atribuir a Super Usuários e Editores o mesmo nível de acesso para ver o conteúdo. De qualquer forma, como um Super Usuário você é capaz de editar este artigo no back-end.

O que vem a seguir?

Escreverei uma série de estudos de caso que você poderá acompanhar para por em ação os princípios acima. Os exemplos incluem:

  • Diferentes usuários vendo conteúdo diferente na área pública do sítio;
  • Um administrador simples despojado para facilitar a administração do site pelo cliente

Introducing the Joomla! Access Control Lists | lynda.com overview

 

Related Posts with Thumbnails

11 comentários em “Joomla 1.6, 1.7 e 2.5: visão geral dos conceitos de ACL

  • 25/11/2014 em 10:39
    Permalink

    Ótimo post,
    tem como habilitar algumas funções de plugins para permitir alteração e inclusão para alguns usuários e para outros não?

    Resposta
  • 11/05/2014 em 21:39
    Permalink

    Tenho um grupo de autores no site (versão Joomla2.5), sendo que cada autor pode enviar um novo artigo através do front-end do site, o artigo não é publicado automaticamente, pq antes precisa ser verificado por um editor, que então decidirá se publica ou não o artigo, coisa normal de qualquer site Joomla.

    O problema é que mesmo depois de o editor verificar o artigo enviado pelo autor e mandar publicar, o artigo não aparece na categoria correta, porém é possível encontrá-lo por palavra-chave, usando o sistema de busca do site.

    A questão é que o artigo simplesmente NÃO aparece na lista de artigos na categoria em que foi add, embora esteja publicado.

    Alguém tem uma ideia do que pode estar causando este bug??

    Resposta
  • 11/12/2012 em 12:17
    Permalink

    Observei seu trabalho por isso estou confiante que você pode me ajudar…
    Estou desenvolvendo um site e eles estão precisando que nele tenha um controle de download por usuário cadastrado (cliente)
    ex. Essa empresa trabalha com concreto, eles disponibilizam planilhas para determinado cliente, ao fazer login e entra no site ele terá
    a disposição todo o conteúdo pra download ou visualização do cliente mais X não poder ver os dados de Y, X só poder ver arquivos do X
    alguma dica?:
    Peço desculpa pelo inconivente mais estou precisando muito de sua ajuda.

    Resposta
    • 11/12/2012 em 19:07
      Permalink

      Jhonn, a solução mais simples que vejo é através da ACL do sistema.
      Cada cliente(usuário) pertencerá a um grupo de usuários (a empresa). Depois, crie um nivel de acesso para cada empresa ligado ao grupo respectivo.
      Ao criar a página ou categoria de conteúdo específico do cliente, atribuir essa nivel de acesso. Somente os usuários daquela empresa verão os conteúdos específicos.
      Boa sorte!

      Resposta
      • 11/12/2012 em 20:23
        Permalink

        Eu nunca tinha pensando que iria usar tão cedo essa ferramenta do joomla, estou passando por dificuldade pra assimilar ela.
        Não querendo abusar da sua boa vontade, mais poderia fazer uma video aula encima da minha pergunta anterior? eu posso lhe pagar pelo serviço, caso possa me ajudar entre em contato pelo email para combinar valores. Desculpa pelo inconveniente mais estou precisando…

        Resposta
  • 03/12/2012 em 20:04
    Permalink

    Olá Helvecio, parabéns pelo post e muito obrigado por compartilhar seu conhecimento.
    A tempo venho desenvolvendo um componente para Joomla e deixei para me preocupar com ACL por último.

    Preciso muito dominar ACL Joomla, vou ficar ligado no seu Blog vlw.

    Resposta
    • 11/12/2012 em 19:09
      Permalink

      O ACL do Joomla é uma das ferramentas mais interessantes e ao mesmo tempo de difícil compreensão rápida. Um componente com um bom ACL aumenta suas chances de ter um maior reconhecimento pelo mercado. Quando ele estiver pronto, me avise para eu dar uma olhada. Boa sorte Evandro!

      Resposta
  • 06/11/2012 em 10:59
    Permalink

    Bom dia amigo, primeiramente gostaria de parabenizar o post, perfeito…

    Tennho uma duvida que seria a seguinte, quero criar uma grupo de administradores do site que tenha acesso total no backend menos na instalação e administração de temas.

    tem como faser isso?

    Uso joomla 1.7 e 2.5

    Obrigado

    Resposta
    • 07/11/2012 em 17:40
      Permalink

      Prezado, obrigado pelo elogio. Sempre é bom saber que estou ajudando.
      O que você quer é simples. Em Gerenciador de Extensões > Opções negue o acesso ao componente do grupo de administradores em Componente de Acesso.
      Lembre-se que o grupo Super User e um usuário nesse grup deve continuar a existir.
      Obrigado por sua visita!

      Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *