29 lines
901 B
Python
29 lines
901 B
Python
|
|
from rest_framework import serializers
|
||
|
|
from django.contrib.auth import get_user_model
|
||
|
|
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
|
||
|
|
|
||
|
|
User = get_user_model()
|
||
|
|
|
||
|
|
|
||
|
|
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
|
||
|
|
"""Custom JWT token serializer that includes user data."""
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def get_token(cls, user):
|
||
|
|
token = super().get_token(user)
|
||
|
|
# Add custom claims
|
||
|
|
token['email'] = user.email
|
||
|
|
token['username'] = user.username
|
||
|
|
return token
|
||
|
|
|
||
|
|
def validate(self, attrs):
|
||
|
|
data = super().validate(attrs)
|
||
|
|
# Add user data to response
|
||
|
|
data['user'] = {
|
||
|
|
'id': self.user.id,
|
||
|
|
'email': self.user.email,
|
||
|
|
'username': self.user.username,
|
||
|
|
'first_name': self.user.first_name,
|
||
|
|
'last_name': self.user.last_name,
|
||
|
|
}
|
||
|
|
return data
|