Last active
March 4, 2024 11:51
-
-
Save Drunpy/cef17fa9676088cb212ff0fd7b616c99 to your computer and use it in GitHub Desktop.
Exemplo de implementação de Grupos e Permissões no Django.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.contrib.auth.models import User | |
from django.contrib.auth.models import Group | |
from django.contrib.auth.models import Permission | |
from django.contrib.contenttypes.models import ContentType | |
# PERMISSÕES | |
# Permissões geralmente são usadas para fazer controle de acesso. | |
# Exemplo prático: Num sistema de gerenciamento a área de marketing pode acessar | |
# a área de Analytics da empresa. | |
# Implementação prática com as permissões do Django. | |
# Definindo a permissão que vamos chamar de "Pode ver analytics" | |
# Veja direto da fonte: https://docs.djangoproject.com/pt-br/2.1/topics/auth/default/#permissions-and-authorization | |
# Leia mais sobre o que é o ContentType em: https://docs.djangoproject.com/pt-br/2.2/ref/contrib/contenttypes/#the-contenttype-model | |
modelo_de_referencia = ContentType.objects.get_for_model(User) | |
pode_ver_analytics = Permission.objects.create(codename='pode_ver_analytics', name='Pode ver a área de analytics', content_type=modelo_de_referencia) | |
# Criando o grupo "Marketing" que vai receber nossa permissão | |
# Leia sobre os grupos direto na fonte: https://docs.djangoproject.com/pt-br/2.1/ref/contrib/auth/#django.contrib.auth.models.Group | |
grupo_marketing = Group.objects.create(name='Marketing') | |
# Vamos aplicar a permissao ao grupo criado | |
grupo_marketing.permissions.add(pode_ver_analyts) | |
# Para verificar se o grupo tem a permissão | |
# Leia mais sobre a funço "has_perm" aqui: https://docs.djangoproject.com/pt-br/2.2/ref/contrib/auth/#django.contrib.auth.models.User.has_perm | |
grupos_marketing.has_perm('auth.pode_ver_analytics') # Retorna True | |
# Adicionado um usuário ao grupo | |
# Leia sobre como criar um usuário: https://docs.djangoproject.com/pt-br/2.2/ref/contrib/auth/#django.contrib.auth.models.UserManager.create_user | |
usuario = User.objects.get(email='[email protected]') | |
usuario.groups.add(grupo_marketing) | |
# Caso tenha ficado confuso nas ultimas linhas, leia sobre | |
# a relação ManyToMany dos models em: https://docs.djangoproject.com/pt-br/2.1/topics/db/examples/many_to_many/#many-to-many-relationships | |
__author__ = "Lorran Rosa" #github.com/Drunpy | |
__email__ = "[email protected]" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment