У меня есть user_auth с drf_simplejwt, но только суперпользователь может войти в систему, когда я пытаюсь войти в систему с обычным пользователем, это не работает
#serializers.py
class TokenSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
def validate(self, data):
user = authenticate(**data)
if user and user.is_active:
return user
return serializers.ValidationError('Incorret cridentials')
вот ответ суперпользователя
#views.py
from rest_framework_simplejwt.tokens import RefreshToken
class TokenView(generics.GenericAPIView):
serializer_class = TokenSerializer
def post(self, request, *args, **Kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
refresh = RefreshToken.for_user(user)
return Response({
'user': UserSerializer(user, context=self.get_serializer_context()).data,
'token': {
'refresh': str(refresh),
'access': str(refresh.access_token)
}
})
# ответ суперпользователя
{
"user": {
"username": "lio"
},
"token": {
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTU4ODY1ODM2NCwianRpIjoiN2NlOTljMmIyN2ZmNDBjNDg1MmUzN2FhZWRhNjY1MjciLCJ1c2VyX2lkIjo0fQ.6x2A2WSXdp0F12u09woAlVZAUJcYn3OZJx6tKmtWgJQ",
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg4NTcyMjY0LCJqdGkiOiIyNDU2MzhjNGM0NGY0OWQwOGM1Yzg2ODc4ODQ0NzMxMiIsInVzZXJfaWQiOjR9.gRUWgFn7hearyC0_90BOYjKOp4IOVr18vvStjk_8ID0"
}
}
нормальный ответ пользователя
{"non_fields_error": "Incorret cridentials"}