diff --git a/api/masteriqapp/serializers/UserSerializer.py b/api/masteriqapp/serializers/UserSerializer.py new file mode 100644 index 0000000..1762313 --- /dev/null +++ b/api/masteriqapp/serializers/UserSerializer.py @@ -0,0 +1,12 @@ +from django.contrib.auth import get_user_model +from rest_framework import serializers + + +class UserSerializer(serializers.ModelSerializer): + + class Meta: + model = get_user_model() + fields = ['username', 'password'] + + def create(self, validated_data): + return get_user_model().objects.create_user(**validated_data) \ No newline at end of file diff --git a/api/masteriqapp/views/AuthenticationView.py b/api/masteriqapp/views/AuthenticationView.py index b6a37fb..50e61e6 100644 --- a/api/masteriqapp/views/AuthenticationView.py +++ b/api/masteriqapp/views/AuthenticationView.py @@ -12,6 +12,7 @@ from django.conf import settings import masteriqapp.models.IQ +from masteriqapp.serializers.UserSerializer import UserSerializer masteriq = apps.get_app_config("masteriqapp") @@ -23,18 +24,20 @@ class AuthenticationView(viewsets.ViewSet, ObtainAuthToken): @action(detail=False, methods=['POST'], permission_classes=[AllowAny]) def register(self, request): username = request.data.get('username') - password = request.data.get('password') if not get_user_model().objects.filter(username=username).exists(): - user = get_user_model().objects.create_user(username=username, password=password) - self.create_iq_objects_for_new_user(user) - return Response({'message': 'Register successful'}, status=status.HTTP_201_CREATED) - else: - return Response({'message': 'Username already exists'}, status=status.HTTP_400_BAD_REQUEST) + user_serializer = UserSerializer(data=request.data) + if user_serializer.is_valid(): + user = user_serializer.save() + self.create_iq_objects_for_new_user(user) + return Response({'message': 'Register successful'}, status=status.HTTP_201_CREATED) + return Response(data=user_serializer.errors, status=status.HTTP_400_BAD_REQUEST) + return Response({'message': 'Username already exists'}, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['POST'], permission_classes=[AllowAny]) def token(self, request): serializer = self.serializer_class(data=request.data, context={'request': request}) + print(self.serializer_class) if serializer.is_valid(): token, created = Token.objects.get_or_create(user=serializer.validated_data['user']) if not created: @@ -50,8 +53,8 @@ def token(self, request): return Response({ 'token': token.key, 'expires': expiring_date - }) - return Response(serializer.errors, status=status.HTTP_401_UNAUTHORIZED) + }, status=status.HTTP_200_OK) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def create_iq_objects_for_new_user(self, user): categories = self.category_model.objects.all() diff --git a/frontend/src/api_client.js b/frontend/src/api_client.js index c936765..7cab151 100644 --- a/frontend/src/api_client.js +++ b/frontend/src/api_client.js @@ -192,7 +192,6 @@ export default if (response.status === 200) { // set cookie let date = new Date(response.data.expires).toUTCString() - console.log(date) document.cookie = `access_token=Token ${response.data.token};secure;expires=${date};`; // TODO adding expires date from backend // set axios header