Пример #1
0
    def get(self, request, version=1, user=None, *args, **kwargs):
        serializer = serializers.RequestUserAuthDone(data=request.query_params)
        if serializer.is_valid():
            application = Application.find_application(
                serializer.validated_data['application_id'])
            if application:
                res = get_server(
                    application.url, application.application_id,
                    application.secret_token).request_token(
                        redirect_uri='%s?application_id=%s' %
                        (request.build_absolute_uri(reverse("user_auth_done")),
                         application.application_id),
                        code=serializer.validated_data['code'],
                    )
                user = User.get_user(username=res.userinfo['nickname'],
                                     application=application)
                if not user:
                    username = '******' % (slugify_name(
                        application.name), res.userinfo['nickname'])
                    user = User.add_user(
                        username,
                        res.userinfo['name'],
                        avatar=res.userinfo['picture'],
                        id_token=res.id_token,
                        access_token=res.access_token,
                        application=application,
                        app_username=res.userinfo['nickname'],
                        openid=res.id,
                    )
                token, created = Token.objects.get_or_create(user=user)
                res = {'token': token.key, 'user': {}}
                return Response(res, 200)
            else:
                return Response({"message": "Application not found."},
                                status=status.HTTP_400_BAD_REQUEST)

        else:
            return Response({"message": serializer.errors},
                            status=status.HTTP_400_BAD_REQUEST)
Пример #2
0
    def put(self, request, version=1, *args, **kwargs):
        serializer = serializers.RequestUserAuth(data=request.query_params)
        if serializer.is_valid():
            user = User.get_user(
                username=serializer.validated_data['username'])
            if not user:
                user = User.get_user(email=serializer.validated_data['email'])

            if user:
                return Response(
                    {"message": "Email/username is already exists."},
                    status=status.HTTP_406_NOT_ACCEPTABLE)
            else:
                user = User.add_user(
                    serializer.validated_data['username'],
                    serializer.validated_data['fullname'],
                    serializer.validated_data['email'],
                )
                tasks.send_email(user.email, generate_random_code(6),
                                 'activation_code')
        else:
            return Response({"message": serializer.errors},
                            status=status.HTTP_400_BAD_REQUEST)