Custom permission return always true, django

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

Answers (1)

user8060120
user8060120

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

Related Questions