Reputation: 89
Sorry for my english. Now i learning django rest and i try create custom permisssion for user. Fox example permission: "big" and "small".
My user model
class User(AbstractUser):
is_active = models.BooleanField(default=False)
email = models.EmailField(blank=False, unique=True)
avatar = models.ImageField(upload_to='avatar/users', blank=True)
class Meta:
permissions = (
("big", "this is big boy"),
("small", "this is small"),
)
then i added permission to user something like this:
permission = Permission.objects.get(name='big')
user.user_permissions.add(permission)
user.save()
created custom class, it class check permission:
class IsBigBoy(permissions.BasePermission):
def has_permission(self, request, view):
return request.user.has_perm('users.big')
and in view i create test class for check my custom permission
class MySuperTestRequest(generics.CreateAPIView):
permission_classes = (permissions.IsAuthenticated, custom_permissions.IsBigBoy)
serializer_class = CreateSomethingSerializer
def post(self,
return Response({"detail": "good"}, status.HTTP_200_OK)
Problem:
return request.user.has_perm('users.big')
it code always return true
Upvotes: 0
Views: 968
Reputation:
may be you need user has_perms()
for your logic, and don't forget if user is_superuser he has all permissions.
Upvotes: 4