From 31ab76b2e98870e3a1ede38e354d10c3bfe3cea0 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 21 Dec 2023 10:25:59 +0100 Subject: [PATCH] user creation api --- chat/api.py | 13 +++++++++++++ chat/serializers.py | 12 +++++++++++- enchant_server/settings.py | 6 +++++- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 chat/api.py diff --git a/chat/api.py b/chat/api.py new file mode 100644 index 0000000..6df5fd9 --- /dev/null +++ b/chat/api.py @@ -0,0 +1,13 @@ +from rest_framework import permissions +from rest_framework.generics import CreateAPIView +#from django.contrib.auth import get_user_model # If used custom user model + +from .serializers import UserSerializer + +class CreateUserView(CreateAPIView): + + #model = get_user_model() + permission_classes = [ + permissions.AllowAny # Or anon users can't register + ] + serializer_class = UserSerializer diff --git a/chat/serializers.py b/chat/serializers.py index 3c20db8..80eb201 100644 --- a/chat/serializers.py +++ b/chat/serializers.py @@ -3,9 +3,19 @@ from rest_framework import serializers from .models import App, Room, Message class UserSerializer(serializers.HyperlinkedModelSerializer): + + password = serializers.CharField(write_only=True) + + def create(self, validated_data): + user = User.objects.create_user( + username=validated_data['username'], + password=validated_data['password'], + ) + return user + class Meta: model = User - fields = ['id', 'username'] + fields = ['id', 'username', 'password'] class AppSerializer(serializers.HyperlinkedModelSerializer): class Meta: diff --git a/enchant_server/settings.py b/enchant_server/settings.py index 654f85b..71d14f0 100644 --- a/enchant_server/settings.py +++ b/enchant_server/settings.py @@ -136,6 +136,10 @@ REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ - 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' + 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly', + ], + 'DEFAULT_AUTHENTICATION_CLASSES': [ + 'rest_framework.authentication.BasicAuthentication', + 'rest_framework.authentication.SessionAuthentication', ] }