示例#1
0
def test_redirect_in_maintenance_mode_decorator(rf, settings, maintenance_mode,
                                                request_method, methods,
                                                expected_status_code):
    request = getattr(rf, request_method)('/foo')
    settings.MAINTENANCE_MODE = maintenance_mode
    if methods is None:
        deco = redirect_in_maintenance_mode
    else:
        deco = redirect_in_maintenance_mode(methods=methods)
    resp = deco(simple_view)(request)
    assert resp.status_code == expected_status_code
def test_redirect_in_maintenance_mode_decorator(rf, settings, maintenance_mode,
                                                request_method, methods,
                                                expected_status_code):
    request = getattr(rf, request_method)('/foo')
    settings.MAINTENANCE_MODE = maintenance_mode
    if methods is None:
        deco = redirect_in_maintenance_mode
    else:
        deco = redirect_in_maintenance_mode(methods=methods)
    resp = deco(simple_view)(request)
    assert resp.status_code == expected_status_code
示例#3
0
    We store those email addresses in the extra data of each account.
    """
    email_url = 'https://api.github.com/user/emails'

    def complete_login(self, request, app, token, **kwargs):
        session = requests_retry_session()
        params = {'access_token': token.token}
        profile_data = session.get(self.profile_url, params=params)
        profile_data.raise_for_status()
        extra_data = profile_data.json()
        email_data = session.get(self.email_url, params=params)
        email_data.raise_for_status()
        extra_data['email_addresses'] = email_data.json()
        return self.get_provider().sociallogin_from_response(
            request, extra_data)


class KumaOAuth2LoginView(OAuth2LoginView):
    def dispatch(self, request):
        next_url = (get_next_redirect_url(request)
                    or reverse('users.my_edit_page'))
        request.session['sociallogin_next_url'] = next_url
        request.session.modified = True
        return super(KumaOAuth2LoginView, self).dispatch(request)


oauth2_login = redirect_in_maintenance_mode(
    KumaOAuth2LoginView.adapter_view(KumaGitHubOAuth2Adapter))
oauth2_callback = redirect_in_maintenance_mode(
    OAuth2CallbackView.adapter_view(KumaGitHubOAuth2Adapter))
示例#4
0
文件: views.py 项目: Elchi3/kuma
    We store those email addresses in the extra data of each account.
    """
    email_url = 'https://api.github.com/user/emails'

    def complete_login(self, request, app, token, **kwargs):
        params = {'access_token': token.token}
        profile_data = requests.get(self.profile_url, params=params)
        extra_data = profile_data.json()
        email_data = requests.get(self.email_url, params=params)
        extra_data['email_addresses'] = email_data.json()
        return self.get_provider().sociallogin_from_response(request,
                                                             extra_data)


class KumaOAuth2LoginView(OAuth2LoginView):

    def dispatch(self, request):
        next_url = (get_next_redirect_url(request) or
                    reverse('users.my_edit_page'))
        request.session['sociallogin_next_url'] = next_url
        request.session.modified = True
        return super(KumaOAuth2LoginView, self).dispatch(request)


oauth2_login = redirect_in_maintenance_mode(
    KumaOAuth2LoginView.adapter_view(KumaGitHubOAuth2Adapter)
)
oauth2_callback = redirect_in_maintenance_mode(
    OAuth2CallbackView.adapter_view(KumaGitHubOAuth2Adapter)
)
示例#5
0
                safe_user_details["avatar_url"] = extra_data["picture"]
            elif extra_data.get("avatar_url"):  # GitHub OAuth2
                safe_user_details["avatar_url"] = extra_data["avatar_url"]
            params = {
                "next": next_url,
                "user_details": json.dumps(safe_user_details),
                "csrfmiddlewaretoken": request.META.get("CSRF_COOKIE"),
                "provider": account.get("provider"),
            }
            yari_signup_url = f"{next_url_prefix}/{request.LANGUAGE_CODE}/signup"
            return redirect(yari_signup_url + "?" + urlencode(params))

        return super().get(request, *args, **kwargs)


signup = redirect_in_maintenance_mode(SignupView.as_view())


@require_POST
@redirect_in_maintenance_mode
def send_recovery_email(request):
    """
    Send a recovery email to a user.
    """
    form = UserRecoveryEmailForm(data=request.POST)
    if form.is_valid():
        form.save(request=request)
        return redirect("users.recovery_email_sent")
    else:
        return HttpResponseBadRequest("Invalid request.")
示例#6
0
        socialaccount_views.login_error,
        name='socialaccount_login_error'),
    url(r'^signup/?$',
        views.signup,
        name='socialaccount_signup'),
    url(r'^inactive/?$',
        account_views.account_inactive,
        name='account_inactive'),
    url(r'^email/?$',
        account_views.email,
        name='account_email'),
    url(r'^email/confirm/?$',
        account_views.email_verification_sent,
        name='account_email_verification_sent'),
    url(r'^email/confirm/(?P<key>[-:\w]+)/?$',
        redirect_in_maintenance_mode(account_views.confirm_email),
        name='account_confirm_email'),
    # Auth keys
    url(r'^keys', include('kuma.authkeys.urls')),
]


users_patterns = [
    url(r'^signup/?$',
        redirect_in_maintenance_mode(account_views.signup),
        name='account_signup'),
    url(r'^signin/?$',
        redirect_in_maintenance_mode(account_views.login),
        name='account_login'),
    url(r'^signout/?$',
        redirect_in_maintenance_mode(account_views.logout),
示例#7
0
文件: urls_beta.py 项目: arku/kuma
from allauth.account import views as account_views
from allauth.socialaccount import providers
from django.conf.urls import include, url
from django.views.decorators.csrf import csrf_exempt

from kuma.core.decorators import redirect_in_maintenance_mode

urlpatterns = []
for provider in providers.registry.get_list():
    try:
        prov_mod = importlib.import_module(provider.package + '.urls')
    except ImportError:
        continue
    prov_urlpatterns = getattr(prov_mod, 'urlpatterns', None)
    if prov_urlpatterns:
        urlpatterns += prov_urlpatterns

users_patterns = [
    url(r'^signin/?$',
        redirect_in_maintenance_mode(account_views.login),
        name='account_login'),
    url(r'^signout/?$',
        redirect_in_maintenance_mode(csrf_exempt(account_views.logout)),
        name='account_logout')
]

lang_urlpatterns = [
    url(r'^users/', include(users_patterns)),
]
示例#8
0
        context.update({
            'email_addresses': self.email_addresses,
            'matching_user': self.matching_user,
            'matching_accounts': matching_accounts,
        })
        return context

    def dispatch(self, request, *args, **kwargs):
        response = verify_honeypot_value(request, None)
        if isinstance(response, HttpResponseBadRequest):
            return response
        return super(SignupView, self).dispatch(request, *args, **kwargs)


signup = redirect_in_maintenance_mode(SignupView.as_view())


@require_POST
@redirect_in_maintenance_mode
def send_recovery_email(request):
    """
    Send a recovery email to a user.
    """
    form = UserRecoveryEmailForm(data=request.POST)
    if form.is_valid():
        form.save(request=request)
        return redirect('users.recovery_email_sent')
    else:
        return HttpResponseBadRequest('Invalid request.')
示例#9
0
from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
from allauth.socialaccount.providers.oauth2.views import (OAuth2CallbackView,
                                                          OAuth2LoginView)

from kuma.core.decorators import redirect_in_maintenance_mode


oauth2_login = redirect_in_maintenance_mode(
    OAuth2LoginView.adapter_view(GoogleOAuth2Adapter)
)
oauth2_callback = redirect_in_maintenance_mode(
    OAuth2CallbackView.adapter_view(GoogleOAuth2Adapter)
)