from djoser.serializers import UserCreateSerializer from django.contrib.auth import get_user_model from rest_framework_simplejwt.tokens import RefreshToken, TokenError from rest_framework import serializers from .utils.account_send_email import send_email_to_user from .utils.generate_password import random_pass_generator User = get_user_model() class UserSerializer(UserCreateSerializer): class Meta(UserCreateSerializer.Meta): model = User fields = ('id', 'email', 'first_name','last_name', 'image', 'is_active', 'password',) extra_kwargs = {'password': {'write_only': True}, 'is_active': {'read_only': True}} depth = 1 class LogoutSerializer(serializers.Serializer): refresh = serializers.CharField() default_error_message = { 'bad_token': ('Token is expired or invalid') } def validate(self, attrs): self.refresh_token = attrs['refresh'] return attrs def save(self, **kwargs): try: RefreshToken(self.refresh_token).blacklist() except TokenError: self.fail('bad_token')