This commit is contained in:
18
users/migrations/0003_alter_customuser_is_active.py
Normal file
18
users/migrations/0003_alter_customuser_is_active.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.14 on 2025-05-19 22:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0002_customuser_desc'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='customuser',
|
||||
name='is_active',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
@ -30,6 +30,7 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||
('admin', '관리자'),
|
||||
('manager', '매니저'),
|
||||
('user', '일반 사용자'),
|
||||
|
||||
)
|
||||
|
||||
email = models.EmailField(unique=True)
|
||||
@ -37,7 +38,7 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||
grade = models.CharField(max_length=20, choices=GRADE_CHOICES, default='user')
|
||||
desc = models.TextField(blank=True, null=True, verbose_name="설명")
|
||||
|
||||
is_active = models.BooleanField(default=True)
|
||||
is_active = models.BooleanField(default=False) # 최초 가입 비활성
|
||||
is_staff = models.BooleanField(default=False)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
@ -1,16 +1,17 @@
|
||||
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')
|
||||
fields = ("email", "name", "password", "grade", "desc")
|
||||
|
||||
def create(self, validated_data):
|
||||
password = validated_data.pop('password')
|
||||
password = validated_data.pop("password")
|
||||
user = CustomUser(**validated_data)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
@ -31,7 +32,23 @@ class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
|
||||
token["iss"] = "msa-user"
|
||||
|
||||
return token
|
||||
# def validate(self, attrs):
|
||||
# data = super().validate(attrs)
|
||||
# data['name'] = self.user.name # ✅ 여기에 토큰 응답 추가 정보 삽입
|
||||
# return data
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user