예제 #1
0
    def process_request(self, request):

        # все неправильно настроено
        if not hasattr(request, 'user'):
            raise ImproperlyConfigured(
                "The vk.middleware.AuthenticationMiddleware requires the"
                " Django authentication middleware to be installed.  Edit your"
                " MIDDLEWARE_CLASSES setting to insert"
                " 'django.contrib.auth.middleware.AuthenticationMiddleware'"
                " before the vk.middleware.AuthenticationMiddleware class.")

        # не было попытки авторизоваться через Вконтакте
        if 'viewer_id' not in request.GET:
            return

        # пользователь уже залогинен под тем же именем
        if request.user.is_authenticated():
            if request.user.username == request.GET['viewer_id']:
                return

        # пользователь не залогинен или залогинен под другим именем
        vk_form = VkontakteIframeForm(request.GET)

        user = auth.authenticate(vk_form=vk_form)
        if user:
            request.user = user
            auth.login(request, user)

            # устанавливаем язык пользователя
            lang_code = vk_form.language_code()
            if hasattr(request, 'session') and lang_code:
                request.session['django_language'] = lang_code

        else:
            request.META['VKONTAKTE_LOGIN_ERRORS'] = vk_form.errors
예제 #2
0
    def process_request(self, request):

        # все неправильно настроено
        if not hasattr(request, 'user'):
            raise ImproperlyConfigured(
                "The vk.middleware.AuthenticationMiddleware requires the"
                " Django authentication middleware to be installed.  Edit your"
                " MIDDLEWARE_CLASSES setting to insert"
                " 'django.contrib.auth.middleware.AuthenticationMiddleware'"
                " before the vk.middleware.AuthenticationMiddleware class.")

        # не было попытки авторизоваться через Вконтакте
        if 'viewer_id' not in request.GET:
            self._patch_request_with_vkapi(request)
            return

        # пользователь уже залогинен под тем же именем
        if request.user.is_authenticated():
            if request.user.username == request.GET['viewer_id']:
                self._patch_request_with_vkapi(request)
                return

        # пользователь не залогинен или залогинен под другим именем
        vk_form = VkontakteIframeForm(request.GET)

        user = auth.authenticate(vk_form=vk_form)
        if user:
            request.user = user
            auth.login(request, user)

            if hasattr(request, 'session'):
                # устанавливаем язык пользователя
                lang_code = vk_form.language_code()
                if lang_code:
                    request.session['django_language'] = lang_code

                # сохраняем начальные параметры, тк там точно есть что то полезное
                startup_vars = vk_form.cleaned_data
                del startup_vars[
                    'api_result']  # этот большой кусок сохранять в сессию не будем, он уже есть в vk_profile
                request.session['vk_startup_vars'] = startup_vars

                self._patch_request_with_vkapi(request)

        else:
            request.META['VKONTAKTE_LOGIN_ERRORS'] = vk_form.errors
예제 #3
0
    def process_request(self, request):

        # все неправильно настроено
        if not hasattr(request, 'user'):
            raise ImproperlyConfigured(
                "The vk.middleware.AuthenticationMiddleware requires the"
                " Django authentication middleware to be installed.  Edit your"
                " MIDDLEWARE_CLASSES setting to insert"
                " 'django.contrib.auth.middleware.AuthenticationMiddleware'"
                " before the vk.middleware.AuthenticationMiddleware class.")

        # не было попытки авторизоваться через Вконтакте
        if 'viewer_id' not in request.GET:
            self._patch_request_with_vkapi(request)
            return

        # пользователь уже залогинен под тем же именем
        if request.user.is_authenticated():
            if request.user.username == request.GET['viewer_id']:
                self._patch_request_with_vkapi(request)
                return

        # пользователь не залогинен или залогинен под другим именем
        vk_form = VkontakteIframeForm(request.GET)

        user = auth.authenticate(vk_form=vk_form)
        if user:
            request.user = user
            auth.login(request, user)

            if hasattr(request, 'session'):
                # устанавливаем язык пользователя
                lang_code = vk_form.language_code()
                if lang_code:
                    request.session['django_language'] = lang_code

                # сохраняем начальные параметры, тк там точно есть что то полезное
                startup_vars = vk_form.cleaned_data
                del startup_vars['api_result'] # этот большой кусок сохранять в сессию не будем, он уже есть в vk_profile
                request.session['vk_startup_vars'] = startup_vars

                self._patch_request_with_vkapi(request)

        else:
            request.META['VKONTAKTE_LOGIN_ERRORS'] = vk_form.errors