Files
msa-django-auth/users/serializers.py
icurfer ec6e2ed4da
All checks were successful
Build And Test / build-and-push (push) Successful in 1m57s
계정 가입 비활성 모드
2025-05-20 08:16:14 +09:00

55 lines
1.8 KiB
Python

from rest_framework import serializers
from .models import CustomUser
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework.exceptions import ValidationError
class RegisterSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)
class Meta:
model = CustomUser
fields = ("email", "name", "password", "grade", "desc")
def create(self, validated_data):
password = validated_data.pop("password")
user = CustomUser(**validated_data)
user.set_password(password)
user.save()
return user
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# ✅ JWT payload에 커스텀 정보 추가
token["name"] = user.name
token["grade"] = user.grade
token["email"] = user.email # 선택적으로 추가 가능
# Kong JWT 플러그인용 issuer 정보 추가
token["iss"] = "msa-user"
return token
def validate(self, attrs):
email = attrs.get("email")
password = attrs.get("password")
user = CustomUser.objects.filter(email=email).first()
if user is None:
raise ValidationError("이메일 또는 비밀번호가 올바르지 않습니다.")
if not user.is_active:
raise ValidationError("계정이 비활성화되어 있습니다. 관리자에게 문의하세요.")
if not user.check_password(password):
raise ValidationError("이메일 또는 비밀번호가 올바르지 않습니다.")
self.user = user # ✅ 수동 설정 필요
data = super().validate(attrs)
data["email"] = user.email
data["grade"] = user.grade
return data