diff --git a/backend/user/serializers.py b/backend/user/serializers.py index cb9552a..b9b073f 100644 --- a/backend/user/serializers.py +++ b/backend/user/serializers.py @@ -1,10 +1,48 @@ -from rest_framework import serializers - +from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User +from rest_framework import status +from rest_framework.response import Response +from rest_framework import serializers +from rest_auth.registration.views import RegisterView +from rest_auth.views import LoginView +from allauth.account import app_settings as allauth_settings + class UserSerializer(serializers.ModelSerializer): class Meta: fields = ('id', 'email', 'username', 'first_name', 'last_name', 'date_joined', 'last_login', 'is_active') model = User + + + +class SignUpView(RegisterView): + + def get_response_data(self, user): + if allauth_settings.EMAIL_VERIFICATION == \ + allauth_settings.EmailVerificationMethod.MANDATORY: + return {"detail": _("Verification e-mail sent.")} + serializer = UserSerializer(user) + data = { + 'user': serializer.data, + 'session': self.request.session.session_key, + 'token': self.token + } + return data + + +class SignInView(LoginView): + + def get_response(self): + serializer_class = self.get_response_serializer() + serializer = UserSerializer(self.user) + data = { + 'user': serializer.data, + 'session': self.request.session.session_key, + 'token': self.token + } + serializer = serializer_class(instance=data, + context={'request': self.request}) + + return Response(serializer.data, status=status.HTTP_200_OK) diff --git a/backend/webvirtcloud/settings/base.py b/backend/webvirtcloud/settings/base.py index 2fb4e66..f1a5ceb 100644 --- a/backend/webvirtcloud/settings/base.py +++ b/backend/webvirtcloud/settings/base.py @@ -58,6 +58,16 @@ AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', ) +REST_SESSION_LOGIN = True + +REST_AUTH_REGISTER_SERIALIZERS = { + 'REGISTER_SERIALIZER': 'user.serializers.SignUpView', +} + +REST_AUTH_SERIALIZERS = { + 'LOGIN_SERIALIZER': 'user.serializers.SignInView', +} + MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', diff --git a/backend/webvirtcloud/settings/dev.py b/backend/webvirtcloud/settings/dev.py index 375ebdb..8646726 100644 --- a/backend/webvirtcloud/settings/dev.py +++ b/backend/webvirtcloud/settings/dev.py @@ -39,8 +39,6 @@ CORS_ORIGIN_WHITELIST = ( # Swagger settings SWAGGER_SETTINGS = { - 'LOGIN_URL': 'login', - 'LOGOUT_URL': 'logout', 'VALIDATOR_URL': None, 'JSON_EDITOR': True, 'USE_SESSION_AUTH': True,