]> git.parisson.com Git - django-social-auth.git/commitdiff
Association and Disconnect custom URLs
authorMatías Aguirre <matiasaguirre@gmail.com>
Wed, 29 Jun 2011 19:26:29 +0000 (16:26 -0300)
committerMatías Aguirre <matiasaguirre@gmail.com>
Wed, 29 Jun 2011 19:27:25 +0000 (16:27 -0300)
README.rst
doc/configuration.rst
social_auth/views.py

index f68b6b516deab69295c571abf8125459e908a7a2..4317ccd29d5e2cf251c3a81dc0e747658e8ef2e3 100644 (file)
@@ -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::
index c3e5f87eed2e9b2d58167710fcb57c829394ffc0..08dc90bf5a7589c814e66f4c038466a180f472fe 100644 (file)
@@ -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::
index 20e32dd0f5607b1e8e27bcbb022ee214069f2477..3e1e54da121a6b7e4ab6a3dffb8ad3d23d79dade 100644 (file)
@@ -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)