xyb/drf-passwordless-jwt

View on GitHub
drf_passwordless_jwt/serializers.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import jwt
from django.conf import settings
from django.core.validators import RegexValidator
from drfpasswordless.serializers import EmailAuthSerializer
from rest_framework import serializers

from .utils import decode_jwt


class EmailAuthWhiteListSerializer(EmailAuthSerializer):
    email_regex = RegexValidator(
        regex=settings.EMAIL_WHITE_LIST,
        message=settings.EMAIL_WHITE_LIST_MESSAGE,
    )
    email = serializers.EmailField(validators=[email_regex])


class JWTSerializer(serializers.Serializer):
    token = serializers.CharField()

    def validate_token(self, value):
        try:
            value = decode_jwt(value)
        except jwt.exceptions.PyJWTError:
            raise serializers.ValidationError
        return value