Add, user modify
All checks were successful
Build And Test / build-and-push (push) Successful in 2m49s
All checks were successful
Build And Test / build-and-push (push) Successful in 2m49s
This commit is contained in:
@ -6,7 +6,7 @@ from rest_framework_simplejwt.tokens import RefreshToken
|
||||
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
model = CustomUser
|
||||
list_display = ('email', 'name', 'grade', 'is_active', 'is_staff', 'jwt_preview')
|
||||
list_display = ('email', 'name', 'grade', 'desc', 'is_active', 'is_staff', 'jwt_preview')
|
||||
list_filter = ('grade', 'is_active', 'is_staff')
|
||||
search_fields = ('email', 'name')
|
||||
ordering = ('email',)
|
||||
@ -15,7 +15,7 @@ class CustomUserAdmin(UserAdmin):
|
||||
|
||||
fieldsets = (
|
||||
(None, {'fields': ('email', 'password')}),
|
||||
('Personal Info', {'fields': ('name', 'grade')}),
|
||||
('Personal Info', {'fields': ('name', 'grade', 'desc')}),
|
||||
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
|
||||
('Important dates', {'fields': ('last_login', 'created_at')}),
|
||||
('JWT Token Preview', {'fields': ('jwt_preview',)}), # ✅ 별도 섹션으로 추가
|
||||
@ -25,7 +25,8 @@ class CustomUserAdmin(UserAdmin):
|
||||
(None, {
|
||||
'classes': ('wide',),
|
||||
'fields': (
|
||||
'email', 'name', 'grade', 'password1', 'password2',
|
||||
'email', 'name', 'grade', 'desc',
|
||||
'password1', 'password2',
|
||||
'is_active', 'is_staff', 'is_superuser'
|
||||
),
|
||||
}),
|
||||
|
18
users/migrations/0002_customuser_desc.py
Normal file
18
users/migrations/0002_customuser_desc.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.14 on 2025-05-17 13:04
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='customuser',
|
||||
name='desc',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='설명'),
|
||||
),
|
||||
]
|
@ -35,6 +35,8 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||
email = models.EmailField(unique=True)
|
||||
name = models.CharField(max_length=255)
|
||||
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_staff = models.BooleanField(default=False)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
@ -7,7 +7,7 @@ class RegisterSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = CustomUser
|
||||
fields = ('email', 'name', 'password', 'grade')
|
||||
fields = ('email', 'name', 'password', 'grade', 'desc')
|
||||
|
||||
def create(self, validated_data):
|
||||
password = validated_data.pop('password')
|
||||
|
@ -21,6 +21,14 @@ class MeView(APIView):
|
||||
user = request.user
|
||||
serializer = RegisterSerializer(user)
|
||||
return Response(serializer.data)
|
||||
|
||||
def put(self, request):
|
||||
user = request.user
|
||||
serializer = RegisterSerializer(user, data=request.data, partial=True) # ✅ 부분 수정 허용
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return Response(serializer.data)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class CustomTokenObtainPairView(TokenObtainPairView):
|
||||
serializer_class = CustomTokenObtainPairSerializer
|
Reference in New Issue
Block a user