Skip to content

Instantly share code, notes, and snippets.

@Drunpy
Last active March 4, 2024 11:51
Show Gist options
  • Save Drunpy/cef17fa9676088cb212ff0fd7b616c99 to your computer and use it in GitHub Desktop.
Save Drunpy/cef17fa9676088cb212ff0fd7b616c99 to your computer and use it in GitHub Desktop.
Exemplo de implementação de Grupos e Permissões no Django.
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='ana@marketing.com.br')
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__ = "rosalorran98@gmail.com"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment