temp update
This commit is contained in:
@ -1,8 +1,14 @@
|
||||
from django.contrib.auth.hashers import make_password, check_password
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
User = get_user_model()
|
||||
|
||||
import uuid
|
||||
from django.db import IntegrityError
|
||||
from django.conf import settings
|
||||
from django.urls import reverse
|
||||
from django.contrib.auth.password_validation import validate_password
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from django.db import transaction
|
||||
from rest_framework import serializers
|
||||
@ -73,10 +79,11 @@ class GifuAreaSerializer(serializers.ModelSerializer):
|
||||
|
||||
class UserRegistrationSerializer(serializers.ModelSerializer):
|
||||
password = serializers.CharField(write_only=True, required=True, validators=[validate_password])
|
||||
password2 = serializers.CharField(write_only=True, required=True, validators=[validate_password])
|
||||
|
||||
class Meta:
|
||||
model = CustomUser
|
||||
fields = ('email', 'password', 'firstname', 'lastname', 'date_of_birth', 'female')
|
||||
fields = ('email', 'password', 'password2', 'firstname', 'lastname', 'date_of_birth', 'female')
|
||||
extra_kwargs = {
|
||||
'email': {'required': True},
|
||||
'firstname': {'required': True},
|
||||
@ -84,38 +91,68 @@ class UserRegistrationSerializer(serializers.ModelSerializer):
|
||||
'date_of_birth': {'required': True},
|
||||
}
|
||||
|
||||
def validate(self, attrs):
|
||||
if attrs['password'] != attrs['password2']:
|
||||
raise serializers.ValidationError({"password": "Password fields didn't match."})
|
||||
|
||||
try:
|
||||
validate_password(attrs['password'])
|
||||
except ValidationError as e:
|
||||
raise serializers.ValidationError({"password": list(e.messages)})
|
||||
|
||||
return attrs
|
||||
|
||||
def validate_email(self, value):
|
||||
if CustomUser.objects.filter(email=value).exists() or TempUser.objects.filter(email=value).exists():
|
||||
raise serializers.ValidationError("この電子メールアドレスは既に使用されています。")
|
||||
return value
|
||||
|
||||
def create(self, validated_data):
|
||||
try:
|
||||
user = CustomUser.objects.create_user(
|
||||
email=validated_data['email'],
|
||||
password=validated_data['password'],
|
||||
firstname=validated_data['firstname'],
|
||||
lastname=validated_data['lastname'],
|
||||
date_of_birth=validated_data['date_of_birth'],
|
||||
female=validated_data.get('female', False),
|
||||
group='' # この値は必要に応じて変更してください
|
||||
)
|
||||
return user
|
||||
except ValidationError as e:
|
||||
raise serializers.ValidationError({"password": list(e.messages)})
|
||||
raw_password = validated_data.get('password')
|
||||
|
||||
# デバッグコード
|
||||
hashed_password = make_password(raw_password)
|
||||
print(f"Hashed password during registration: {hashed_password}")
|
||||
is_valid = check_password(raw_password, hashed_password)
|
||||
print(f"Password is valid during registration: {is_valid}")
|
||||
|
||||
validated_data['password'] = hashed_password
|
||||
return super(UserRegistrationSerializer, self).create(validated_data)
|
||||
|
||||
#validated_data['password'] = make_password(validated_data.get('password'))
|
||||
#return super(UserRegistrationSerializer, self).create(validated_data)
|
||||
|
||||
# try:
|
||||
# with transaction.atomic():
|
||||
# password = validated_data['password'].encode('utf-8').decode('utf-8')
|
||||
#
|
||||
# user = CustomUser.objects.create_user(
|
||||
# email=validated_data['email'],
|
||||
# password=password, # validated_data['password'],
|
||||
# firstname=validated_data['firstname'],
|
||||
# lastname=validated_data['lastname'],
|
||||
# date_of_birth=validated_data['date_of_birth'],
|
||||
# female=validated_data.get('female', False),
|
||||
# group='' # この値は必要に応じて変更してください
|
||||
# )
|
||||
# logger.debug(f"Creating user with data: {validated_data}")
|
||||
# user.set_password(validated_data['password'])
|
||||
# user.save()
|
||||
#
|
||||
# return user
|
||||
# except ValidationError as e:
|
||||
# raise serializers.ValidationError({"password": list(e.messages)})
|
||||
|
||||
|
||||
'''
|
||||
class CreateUserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = CustomUser
|
||||
fields = ('email', 'password')
|
||||
extra_kwargs = {'password': {'write_only': True}}
|
||||
|
||||
def create(self, validated_data):
|
||||
user = CustomUser.objects.create_user(validated_data['email'],validated_data['password'], '大垣-初心者','','')
|
||||
return user
|
||||
'''
|
||||
#class CreateUserSerializer(serializers.ModelSerializer):
|
||||
# class Meta:
|
||||
# model = CustomUser
|
||||
# fields = ('email', 'password')
|
||||
# extra_kwargs = {'password': {'write_only': True}}
|
||||
#
|
||||
# def create(self, validated_data):
|
||||
# user = CustomUser.objects.create_user(validated_data['email'],validated_data['password'], '大垣-初心者','','')
|
||||
# return user
|
||||
|
||||
class TempUserRegistrationSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
@ -124,6 +161,9 @@ class TempUserRegistrationSerializer(serializers.ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data['verification_code'] = str(uuid.uuid4())
|
||||
raw_password = validated_data.get('password')
|
||||
hashed_password = make_password(raw_password)
|
||||
validated_data['password'] = hashed_password
|
||||
return TempUser.objects.create(**validated_data)
|
||||
|
||||
|
||||
@ -162,14 +202,32 @@ class RogUserSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class LoginUserSerializer(serializers.Serializer):
|
||||
email = serializers.CharField()
|
||||
#email = serializers.CharField()
|
||||
email = serializers.EmailField()
|
||||
password = serializers.CharField()
|
||||
|
||||
def validate(self, data):
|
||||
user = authenticate(**data)
|
||||
if user and user.is_active:
|
||||
return user
|
||||
raise serializers.ValidationError("Invalid Details.")
|
||||
email = data.get('email')
|
||||
password = data.get('password')
|
||||
|
||||
if email and password:
|
||||
user = authenticate(username=email, password=password)
|
||||
if user:
|
||||
if user.is_active:
|
||||
return user
|
||||
raise serializers.ValidationError("User account is disabled.")
|
||||
else:
|
||||
# Check if the user exists
|
||||
try:
|
||||
user_obj = User.objects.get(email=email)
|
||||
raise serializers.ValidationError("Incorrect password.")
|
||||
except User.DoesNotExist:
|
||||
raise serializers.ValidationError("User with this email does not exist.")
|
||||
else:
|
||||
raise serializers.ValidationError("Must include 'email' and 'password'.")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class UseractionsSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user