Como Usar Permissões

Frequentemente surgem dúvidas entre usuários novatos ou até mesmo mais experientes quanto ao uso do sistema de permissões do Django.

As dúvidas mais recentes surgem como questões de limitar a exibição de itens no Admin de acordo com o Usuário ou Grupo do Usuário corrente.

O sistema de permissões do Django cria automaticamente 3 permissões padrão para toda classe de modelo do sistema:

  • Can add
  • Can change
  • Can delete

Como os próprios nomes sugerem, eles determinam os direitos do usuário adicionar, modificar ou excluir itens daquela classe, respectivamente. No caso do usuário não possuir nenhuma das permissões de uma determinada classe de modelo, então esta classe não estará visível no Admin.

Simples né? Sim, mas não se resume a isso.

Esse mesmo nível de permissões pode ser determinado ao grupo do usuário em questão, que facilita a vida do administrador, pois um grupo "Clientes" terá permissões de acesso diferentes de um grupo "Vendedores", e assim fica mais fácil determinar quem é um ou outro.

Super-usuários não estão sob essas condições e sempre terão acesso ilimitado às permissões.

Criando permissões personalizadas

Para ter uma permissão especial para sua classe de modelo, siga o seguinte exemplo:

class MyClass(models.Model):
    ...
    class Meta:
        permissions = (
            ('pode_mudar_status', 'Pode mudar status'),
            ('pode_fazer_outra_coisa', 'Pode fazer outra coisa'),
        )

Limitando acesso a uma view para uma permissão

Para determinar que uma view específica pode ser acessada somente por usuários que contenham determinada permissão, siga o seguinte exemplo:

from django.contrib.auth.decorators import permission_required

@permission_required('minha_aplicacao.pode_mudar_status')
def mudar_status(request):
    return HttpResponse('alo mundo')

Permissões no Template

Para utilizar permissões no template para exibir ou ocultar uma informação, por exemplo, siga o seguinte exemplo:

{% if perms.minha_aplicacao.pode_mudar_status %}
    Usuario pode mudar o status.
{% else %}
    Usuario não pode mudar o status.
{% endif %}

Tire outras dúvidas em nosso CookBook em Português

Last modified 16 years ago Last modified on Jul 24, 2008, 1:09:23 PM
Note: See TracWiki for help on using the wiki.
Back to Top