How to get user permissions?
to get all the permissions of a given user, also the permissions associated with a group this user is part of:
from django.contrib.auth.models import Permissiondef get_user_permissions(user): if user.is_superuser: return Permission.objects.all() return user.user_permissions.all() | Permission.objects.filter(group__user=user)
The key is get the permission objects like this:
from django.contrib.auth.models import Permissionpermissions = Permission.objects.filter(user=user)
and there you can access the id
property like this:
permissions[0].id
If you want the list (id, permission_name)
do the following:
perm_tuple = [(x.id, x.name) for x in Permission.objects.filter(user=user)]
Hope it helps!
If you are using Django 3.0+, user.get_user_permissions()
gives the codename of all the permissions.
More information here: https://docs.djangoproject.com/en/3.0/ref/contrib/auth/#django.contrib.auth.models.User.get_user_permissions