from rest_framework_simplejwt.views import TokenObtainPairView from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from crm.serializers import CRMAdminSerializer class CRMTokenObtainPairSerializer(TokenObtainPairSerializer): @classmethod def get_token(cls, user): token = super().get_token(user) # Add custom claims if user has CRMAdmin profile if hasattr(user, 'crm_admin'): token['role'] = user.crm_admin.role return token class CRMTokenObtainPairView(TokenObtainPairView): serializer_class = CRMTokenObtainPairSerializer @api_view(['GET']) @permission_classes([IsAuthenticated]) def get_current_admin(request): if hasattr(request.user, 'crm_admin'): serializer = CRMAdminSerializer(request.user.crm_admin) return Response(serializer.data) return Response({"detail": "User is not a CRM admin profile"}, status=403)