From e1278ecf78ae63ab262f91c1a401aef7f00e227d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Wed, 29 Jun 2011 16:26:29 -0300 Subject: [PATCH] Associationd and Disconnect custom URLs --- README.rst | 10 +++++++++- doc/configuration.rst | 10 +++++++++- social_auth/views.py | 34 ++++++++++++++++++++++------------ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/README.rst b/README.rst index f68b6b5..4317ccd 100644 --- a/README.rst +++ b/README.rst @@ -160,7 +160,15 @@ Configuration A different URL could be defined for newly registered users:: - SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-login-url/' + SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-redirect-url/' + + or for newly associated accounts:: + + SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = '/new-association-redirect-url/' + + or for account disconnections:: + + SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/' In case of authentication error, the message can be stored in session if the following setting is defined:: diff --git a/doc/configuration.rst b/doc/configuration.rst index c3e5f87..08dc90b 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -69,7 +69,15 @@ Configuration A different URL could be defined for newly registered users:: - SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-login-url/' + SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/new-users-redirect-url/' + + or for newly associated accounts:: + + SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = '/new-association-redirect-url/' + + or for account disconnections:: + + SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/' In case of authentication error, the message can be stored in session if the following setting is defined:: diff --git a/social_auth/views.py b/social_auth/views.py index 20e32dd..3e1e54d 100644 --- a/social_auth/views.py +++ b/social_auth/views.py @@ -11,17 +11,21 @@ from social_auth.backends import get_backend from social_auth.utils import sanitize_redirect -DEFAULT_REDIRECT = getattr(settings, 'SOCIAL_AUTH_LOGIN_REDIRECT_URL', '') or \ - getattr(settings, 'LOGIN_REDIRECT_URL', '') -NEW_USER_REDIRECT = getattr(settings, 'SOCIAL_AUTH_NEW_USER_REDIRECT_URL', '') -LOGIN_ERROR_URL = getattr(settings, 'LOGIN_ERROR_URL', settings.LOGIN_URL) -COMPLETE_URL_NAME = getattr(settings, 'SOCIAL_AUTH_COMPLETE_URL_NAME', - 'complete') -ASSOCIATE_URL_NAME = getattr(settings, 'SOCIAL_AUTH_ASSOCIATE_URL_NAME', - 'associate_complete') -SOCIAL_AUTH_LAST_LOGIN = getattr(settings, 'SOCIAL_AUTH_LAST_LOGIN', +def _setting(name, default=''): + return getattr(settings, name, default) + +DEFAULT_REDIRECT = _setting('SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \ + _setting('LOGIN_REDIRECT_URL') +NEW_USER_REDIRECT = _setting('SOCIAL_AUTH_NEW_USER_REDIRECT_URL') +NEW_ASSOCIATION_REDIRECT = _setting('SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL') +DISCONNECT_REDIRECT_URL = _setting('SOCIAL_AUTH_DISCONNECT_REDIRECT_URL') +LOGIN_ERROR_URL = _setting('LOGIN_ERROR_URL', settings.LOGIN_URL) +COMPLETE_URL_NAME = _setting('SOCIAL_AUTH_COMPLETE_URL_NAME', 'complete') +ASSOCIATE_URL_NAME = _setting('SOCIAL_AUTH_ASSOCIATE_URL_NAME', + 'associate_complete') +SOCIAL_AUTH_LAST_LOGIN = _setting('SOCIAL_AUTH_LAST_LOGIN', 'social_auth_last_login_backend') -SESSION_EXPIRATION = getattr(settings, 'SOCIAL_AUTH_SESSION_EXPIRATION', True) +SESSION_EXPIRATION = _setting('SOCIAL_AUTH_SESSION_EXPIRATION', True) def auth(request, backend): @@ -90,7 +94,11 @@ def associate_complete(request, backend): if not backend: return HttpResponseServerError('Incorrect authentication service') backend.auth_complete(user=request.user) - url = request.session.pop(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT + + url = request.session.pop(REDIRECT_FIELD_NAME, '') or \ + NEW_ASSOCIATION_REDIRECT or \ + DEFAULT_REDIRECT + return HttpResponseRedirect(url) @@ -101,7 +109,9 @@ def disconnect(request, backend, association_id=None): if not backend: return HttpResponseServerError('Incorrect authentication service') backend.disconnect(request.user, association_id) - url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or DEFAULT_REDIRECT + url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or \ + DISCONNECT_REDIRECT_URL or \ + DEFAULT_REDIRECT return HttpResponseRedirect(url) -- 2.39.5