from django.contrib.auth import get_user_model, password_validation
from django.contrib.auth.password_validation import validate_password
from rest_framework import serializers
from .models import User
[문서]class UserRegisterSerializer(serializers.ModelSerializer):
"""
유저 추가
"""
password = serializers.CharField(
required=True, style={"input_type": "password"}, label="비밀번호", write_only=True
)
[문서] def validate_password(self, value):
password_validation.validate_password(value, self.instance)
return value
[문서] def create(self, validated_data):
password = validated_data["password"]
user = User.objects.create(**validated_data)
user.set_password(password)
user.save()
return user
[문서]class UserSerializer(serializers.ModelSerializer):
"""
유저 정보 조회, 수정
"""
[문서]class UserImageUploadSerializer(serializers.ModelSerializer):
"""
유저 프로필 이미지 업로드
"""
[문서]class UserResetPasswordSerializer(serializers.Serializer):
"""
유저 비밀번호 변경
"""
old_password = serializers.CharField(
style={"input_type": "password"}, label="기존 비밀번호"
)
password = serializers.CharField(style={"input_type": "password"}, label="새로운 비밀번호")
re_password = serializers.CharField(
style={"input_type": "password"}, label="비밀번호 확인"
)
[문서] def validate(self, data):
# 바꾸려는 패스워드가 기존 패스워드와 동일할 경우
if data["old_password"] == data["password"]:
raise serializers.ValidationError("기존 패스워드와 동일합니다.")
# 패스워드가 일치하지 않을 경우
if data["password"] != data["re_password"]:
raise serializers.ValidationError("새로운 패스워드가 일치하지 않습니다.")
# password 형식 체크
validate_password(data["password"])
return data
[문서]class UserCheckAvailableSerializer(serializers.ModelSerializer):
"""
유저 유효성 체크
아이디, 닉네임이 가입가능한 값인지 유효성을 체크합니다.
"""
# simplejwt drf-yasg integration
[문서]class TokenObtainPairResponseSerializer(serializers.Serializer):
access = serializers.CharField()
refresh = serializers.CharField()
[문서] def create(self, validated_data):
raise NotImplementedError()
[문서] def update(self, instance, validated_data):
raise NotImplementedError()
[문서]class TokenRefreshResponseSerializer(serializers.Serializer):
access = serializers.CharField()
[문서] def create(self, validated_data):
raise NotImplementedError()
[문서] def update(self, instance, validated_data):
raise NotImplementedError()
[문서]class TokenVerifyResponseSerializer(serializers.Serializer):
[문서] def create(self, validated_data):
raise NotImplementedError()
[문서] def update(self, instance, validated_data):
raise NotImplementedError()
[문서]class TokenBlacklistResponseSerializer(serializers.Serializer):
[문서] def create(self, validated_data):
raise NotImplementedError()
[문서] def update(self, instance, validated_data):
raise NotImplementedError()