Fix Ranking code step1
This commit is contained in:
@ -27,6 +27,7 @@ from django.shortcuts import get_object_or_404
|
||||
from django.utils import timezone
|
||||
from datetime import datetime, date
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class LocationCatSerializer(serializers.ModelSerializer):
|
||||
@ -876,3 +877,37 @@ class UserLastGoalTimeSerializer(serializers.Serializer):
|
||||
user_email = serializers.EmailField()
|
||||
last_goal_time = serializers.DateTimeField()
|
||||
|
||||
class LoginUserSerializer(serializers.Serializer):
|
||||
identifier = serializers.CharField(required=True) # メールアドレスまたはゼッケン番号
|
||||
password = serializers.CharField(required=True)
|
||||
|
||||
def validate(self, data):
|
||||
identifier = data.get('identifier')
|
||||
password = data.get('password')
|
||||
|
||||
if not identifier or not password:
|
||||
raise serializers.ValidationError('認証情報を入力してください。')
|
||||
|
||||
# ゼッケン番号かメールアドレスかを判定
|
||||
if '@' in identifier:
|
||||
# メールアドレスの場合
|
||||
user = authenticate(username=identifier, password=password)
|
||||
else:
|
||||
# ゼッケン番号の場合
|
||||
try:
|
||||
# ゼッケン番号からユーザーを検索
|
||||
user = CustomUser.objects.filter(zekken_number=identifier).first()
|
||||
if user:
|
||||
# パスワード認証
|
||||
if not user.check_password(password):
|
||||
user = None
|
||||
except ValueError:
|
||||
user = None
|
||||
|
||||
if user and user.is_active:
|
||||
return user
|
||||
elif user and not user.is_active:
|
||||
raise serializers.ValidationError('アカウントが有効化されていません。')
|
||||
else:
|
||||
raise serializers.ValidationError('認証情報が正しくありません。')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user