コード例 #1
0
ファイル: views.py プロジェクト: hah1504/DjangoAPI-Starter
class RegisterView(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(RegisterView, self).dispatch(*args, **kwargs)

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        content = {
            "details": "Registered"
        }
        return Response(content,
                        status=status.HTTP_201_CREATED,
                        headers=headers)

    def perform_create(self, serializer):
        user = serializer.save(self.request)

        complete_signup(self.request._request, user, None, None)
        return user
コード例 #2
0
class RegistrationAPIView(RegisterView, TokenMixin):
    """RegistrationAPIView"""

    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    def create(self, request, *args, **kwargs):
        """rewrite method create"""

        if User.objects.filter(username=request.data['username']).exists():
            return Response(
                {
                    'error': 'LOGIN',
                    'message': 'User was NOT created, because LOGIN is exists'
                },
                status=status.HTTP_409_CONFLICT)

        if User.objects.filter(email=request.data['email']).exists():
            return Response(
                {
                    'error': 'EMAIL',
                    'message': 'User was NOT created, because EMAIL is exists',
                },
                status=status.HTTP_409_CONFLICT)

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        # headers = self.get_success_headers(serializer.data)

        email_confirm_token_send(user, self.get_token(user=user))
        request.session.flush()
        return Response(status=status.HTTP_201_CREATED)

    def perform_create(self, serializer):
        """rewrite method perform_create"""

        user = serializer.save(self.request)
        # if user:
        #     try:
        #         payload = {}
        #         payload['id'] = user.id
        #         payload['exp'] = datetime.datetime.now() + datetime.timedelta(days=3)
        #         self.token = jwt.encode(payload, settings.SECRET_KEY, algorithm='HS256')
        #     except Exception as exp:
        #         raise exp

        # complete_signup(self.request._request, user, None, None)
        user = set_first_last_role(user, self.request)
        return user
コード例 #3
0
ファイル: views.py プロジェクト: JackScher/task2
class RegisterUserProfileView(RegisterView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)

        user_status = request.data.get("status")
        place_of_employment = request.data.get("place_of_employment")
        about_yourself = request.data.get("about_yourself")
        location = request.data.get("location")

        if user_status:
            user.status = user_status
        if place_of_employment:
            user.place_of_employment = place_of_employment
        if about_yourself:
            user.about_yourself = about_yourself
        if location:
            user.location = location

        self.add_rating(user)

        headers = self.get_success_headers(serializer.data)

        return Response(self.get_response_data(user),
                        status=status.HTTP_201_CREATED,
                        headers=headers)

    def mapping_for_rating(self, user, field):
        rating_mapping = {
            'status': user.status,
            'place_of_employment': user.place_of_employment,
            'about_yourself': user.about_yourself,
            'location': user.location
        }
        if field:
            return rating_mapping.get(field, None)
        return None

    def add_rating(self, user):
        keys = user.__dict__.keys()
        for key in keys:
            res = self.mapping_for_rating(user, key)
            if res:
                user.rating += 1
        user.save()
コード例 #4
0
class Singup(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(Singup, self).dispatch(*args, **kwargs)

    def get_response_data(self, user):
        if allauth_settings.EMAIL_VERIFICATION == \
                allauth_settings.EmailVerificationMethod.MANDATORY:
            return {"detail": _("Verification e-mail sent.")}
        if getattr(settings, 'REST_USE_JWT', False):
            data = {'user': user, 'token': self.token}
            return JWTSerializer(data).data
        else:
            return TokenSerializer(user.auth_token).data

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        return Response(self.get_response_data(user),
                        status=status.HTTP_200_OK,
                        headers=headers)

    def perform_create(self, serializer):
        user = serializer.save(self.request)
        if getattr(settings, 'REST_USE_JWT', False):
            self.token = jwt_encode(user)
        else:
            create_token(self.token_model, user, serializer)
        current_site = get_current_site(self.request)
        d = ({
            'email': user.email,
            'username': user.username,
            'WEB_SITE_URL': WEB_SITE_URL
        })
        plaintext = get_template('email-template/email.txt')
        htmly = get_template('email-template/welcome.html')
        subject, from_email, to = "Welcome To Tajinder's English Classes", settings.DEFAULT_FROM_EMAIL, user.email
        text_content = plaintext.render(d)
        html_content = htmly.render(d)
        # msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
        # msg.attach_alternative(html_content, "text/html")
        # msg.send()
        return user
コード例 #5
0
class RegistrationAPIView(RegisterView, TokenMixin):
    """RegistrationAPIView"""

    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    def create(self, request, *args, **kwargs):
        """rewrite method create"""

        if User.objects.filter(username=request.data['username']).exists():
            return Response(
                {
                    'error': 'LOGIN',
                    'message': 'User was NOT created, because LOGIN is exists'
                },
                status=status.HTTP_409_CONFLICT)

        if User.objects.filter(email=request.data['email']).exists():
            return Response(
                {
                    'error': 'EMAIL',
                    'message': 'User was NOT created, because EMAIL is exists',
                },
                status=status.HTTP_409_CONFLICT)

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        email_confirm_token_send(user, self.get_token(user=user))
        log.info(msg='User {} was registered'.format(user.username))
        request.session.flush()

        return Response(status=status.HTTP_201_CREATED, headers=headers)

    def perform_create(self, serializer):
        """rewrite method perform_create"""

        user = serializer.save(self.request)
        user = set_first_last_role(user, self.request)
        return user
コード例 #6
0
class RegisterView(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(RegisterView, self).dispatch(*args, **kwargs)

    def get_response_data(self, user):
        # if allauth_settings.EMAIL_VERIFICATION == \
        #         allauth_settings.EmailVerificationMethod.MANDATORY:
        #     return {"detail": _("Verification e-mail sent.")}

        if getattr(settings, 'REST_USE_JWT', False):
            data = {'user': user, 'token': self.token}
            return JWTSerializer(data).data
        else:
            return TokenSerializer(user.auth_token).data

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        return Response(self.get_response_data(user),
                        status=status.HTTP_201_CREATED,
                        headers=headers)

    def perform_create(self, serializer):
        user = serializer.save(self.request)
        if getattr(settings, 'REST_USE_JWT', False):
            self.token = jwt_encode(user)
        else:
            create_token(self.token_model, user, serializer)

        # complete_signup(self.request._request, user,
        #                 allauth_settings.EMAIL_VERIFICATION,
        #                 None)
        return user
コード例 #7
0
class GoogleAuthorization(APIView):
    authentication_classes = (CsrfExemptAuthentication, BasicAuthentication)
    permission_classes = register_permission_classes()

    def post(self, request):
        token = request.POST.get('idtoken')
        id_info = id_token.verify_oauth2_token(token, requests.Request())
        user = authenticate(username=id_info.get('email'))
        if not user:
            google_user = GoogleRegistration(
                data={
                    'first_name': id_info.get('given_name'),
                    'last_name': id_info.get('family_name'),
                    'email': id_info.get('email')
                })
            google_user.is_valid()
            user = google_user.create(google_user.validated_data)

        auth_login(request,
                   user,
                   backend='django.contrib.auth.backends.ModelBackend')
        return Response('Success', status=HTTP_200_OK)
コード例 #8
0
ファイル: test_api.py プロジェクト: Ajay00000/Assignments
 class CustomRegisterView(RegisterView):
     permission_classes = register_permission_classes()
     authentication_classes = ()
コード例 #9
0
class RegisterView(CreateAPIView):
    from rest_auth.registration.app_settings import (
        register_permission_classes, )

    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(RegisterView, self).dispatch(*args, **kwargs)

    def get_response_data(self, user):
        if (allauth_settings.EMAIL_VERIFICATION ==
                allauth_settings.EmailVerificationMethod.MANDATORY):
            return {"detail": _("Verification e-mail sent.")}

        if getattr(settings, "REST_USE_JWT", False):
            data = {"user": user, "token": self.token}
            return JWTSerializer(data).data
        else:
            return TokenSerializer(user.auth_token).data

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)

        response = Response(
            self.get_response_data(user),
            status=status.HTTP_201_CREATED,
            headers=headers,
        )

        if getattr(settings, "REST_USE_JWT", False):
            from rest_framework_jwt.settings import (
                api_settings as jwt_settings, )

            if jwt_settings.JWT_AUTH_COOKIE:
                from datetime import datetime

                expiration = (datetime.utcnow() +
                              jwt_settings.JWT_EXPIRATION_DELTA)
                response.set_cookie(
                    jwt_settings.JWT_AUTH_COOKIE,
                    self.token,
                    expires=expiration,
                    httponly=True,
                )
        return response

    def perform_create(self, serializer):
        user = serializer.save(self.request)
        if getattr(settings, "REST_USE_JWT", False):
            self.token = jwt_encode(user)
        else:
            create_token(self.token_model, user, serializer)

        complete_signup(
            self.request._request,
            user,
            allauth_settings.EMAIL_VERIFICATION,
            None,
        )
        return user

    def get_response_serializer(self):
        if getattr(settings, "REST_USE_JWT", False):
            response_serializer = JWTSerializer
        else:
            response_serializer = TokenSerializer
        return response_serializer
コード例 #10
0
class RegisterView(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    @sensitive_post_parameters_m
    def dispatch(self, *args, **kwargs):
        return super(RegisterView, self).dispatch(*args, **kwargs)

    def get_response_data(self, user):
        if auth_settings.EMAIL_VERIFICATION == \
                auth_settings.EmailVerificationMethod.MANDATORY:
            return {"detail": _("Verification e-mail sent.")}
        return TokenSerializer(user.auth_token).data



    def create(self, request, *args, **kwargs):
        try:
            _user = User.objects.get(username=self.request.data['username']
                                , email=self.request.data['email'])
        except:
            _user = None
        try:
            verified = EmailAddress.objects.get(email=request.data['email']).verified
        except:
            verified = None
        a=False
        if _user and settings.ACCOUNT_LOGIN_BY_MAIL:
            if auth_settings.EMAIL_VERIFICATION == \
                    auth_settings.EmailVerificationMethod.MANDATORY\
                    and not verified:
                a = True
            else:
                user = _user
                self.create_new_token(user)
                headers = {}
        else:
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            user = self.perform_create(serializer)
            headers = self.get_success_headers(serializer.data)
        if a:
            return Response("You need to confirm email",
                            status=status.HTTP_200_OK)
        else:
            return Response(self.get_response_data(user),
                        status=status.HTTP_201_CREATED,
                        headers=headers)

    def perform_create(self, serializer):

        user = serializer.save(self.request)
        create_token(self.token_model, user, serializer)
        complete_signup(self.request._request, user,
                        auth_settings.EMAIL_VERIFICATION,
                        None)
        return user

    def create_new_token(self,user):
        try:
            Token.objects.get(user=user).delete()
        except:
            pass
        create_token(self.token_model, user , None)
コード例 #11
0
class ApiRegistrationView(CreateAPIView):
    serializer_class = RegisterSerializer
    permission_classes = register_permission_classes()
    token_model = TokenModel

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        try:
            serializer.is_valid(raise_exception=True)
            self.perform_create(serializer)
            self.get_success_headers(serializer.data)
            return HttpResponse(json.dumps({}),
                                content_type='application/json')
        except ValidationError as e:
            return create_validation_error_response(e)

    def get_response_data(self, user):
        return TokenSerializer(user.auth_token).data

    def send_activation_email(self, user, serializer):

        create_token(self.token_model, user, serializer)

        token = account_activation_token.make_token(user)

        params = {
            'uid': urlsafe_base64_encode(force_bytes(user.pk)),
            'token': token
        }

        confirmation_link = settings.FRONTEND_URL + "/#/confirm?" + urllib.parse.urlencode(
            params)

        context = {
            'username': user.username,
            'confirmation_link': confirmation_link,
            'service_name': "DummyService"
        }

        message = Mail(from_email='*****@*****.**',
                       to_emails=user.email,
                       subject='Thank you for registration',
                       html_content=render_to_string(
                           "account/email/confirmation_mail.html", context))
        try:
            sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
            response = sg.send(message)
            print(response.status_code)
            print(response.body)
            print(response.headers)
        except Exception as e:
            print(e)

    def perform_create(self, serializer):
        if settings.BYPASS_ACCOUNT_REGISTRATION:
            return None

        user = serializer.save(self.request)

        if settings.SEND_ACCOUNT_ACTIVATION_EMAIL:
            self.send_activation_email(user, serializer)
        else:
            # Activate immediately
            email_verify_obj = EmailAddress.objects.get(user=user)
            email_verify_obj.verified = True
            email_verify_obj.save()

        return user