You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/solucao-quase-definitiva-para-permissoes-em-projetos-django.md
+29Lines changed: 29 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,35 @@ No exemplo acima, se o usuário tiver a permissão `pode_acessar_pagina_config`
57
57
58
58
Também é possível verificar se um usuário tem mais de uma permissão sem a necessidade de um `if` com vários `and`, através do método [`has_perms`](https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User.has_perms).
59
59
60
+
Caso você prefira class based views (assim como eu), as alterações são pequenas em relação ao exemplo acima. Por padrão todas as class based views tem uma propriedade chamada `request`, que podemos usar acessar o usuário logado e fazer as verificações de permissão.
61
+
62
+
```python
63
+
from django.view.generic import TemplateView
64
+
from django.core.exceptions import PermissionDenied
Ainda é possível deixar o código mais simples através do pacote [django-braces](https://github.com/brack3t/django-braces). Com ele temos acesso ao [`PermissionRequiredMixin`](http://django-braces.readthedocs.org/en/latest/access.html#permissionrequiredmixin), que automaticamente faz a verificação de permissão para nós.
Para mais informações sobre o django-braces, acesse sua [documentação oficial](http://django-braces.readthedocs.org/en/latest/index.html).
88
+
60
89
## Limitando o acesso nos templates
61
90
62
91
Limitar o acesso nos templates é tão simples quanto implementar nas views, mas diferentemente do primeiro, os templates já recebem automaticamente um objeto de permissões do usuário logado (desde que você utilize o *context processor*`django.contrib.auth.context_processors.auth`). Supondo que queiramos saber se o usuário pode visualizar um dado item do menu, podemos fazer da seguinte forma:
0 commit comments