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
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))
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) )
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.")
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),
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)), ]
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.')
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) )