return getattr(settings, name, default)
+def backend_setting(backend, name, default=None):
+ """
+ Looks for setting value following these rules:
+ 1. Search for <backend_name> prefixed setting
+ 2. Search for setting given by name
+ 3. Return default
+ """
+ backend_name = backend.AUTH_BACKEND.name.upper().replace('-', '_')
+ return setting('%s_%s' % (backend_name, name)) or \
+ setting(name) or \
+ default
+
+
logger = None
if not logger:
logging.basicConfig()
from django.views.decorators.csrf import csrf_exempt
from social_auth.backends import get_backend
-from social_auth.utils import sanitize_redirect, setting, log
+from social_auth.utils import sanitize_redirect, setting, log, backend_setting
DEFAULT_REDIRECT = setting('SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \
log('warn', 'Messages framework not in place, some '+
'errors have not been shown to the user.')
- url = setting('SOCIAL_AUTH_BACKEND_ERROR_URL', LOGIN_ERROR_URL)
+ url = backend_setting(backend, 'SOCIAL_AUTH_BACKEND_ERROR_URL',
+ LOGIN_ERROR_URL)
return HttpResponseRedirect(url)
return wrapper
return dec
user = auth_complete(request, backend, request.user, *args, **kwargs)
if not user:
- url = LOGIN_ERROR_URL
+ url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL)
elif isinstance(user, HttpResponse):
return user
else:
- url = setting('SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL') or \
+ url = backend_setting(backend,
+ 'SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL') or \
redirect_value or \
DEFAULT_REDIRECT
return HttpResponseRedirect(url)
"""Disconnects given backend from current logged in user."""
backend.disconnect(request.user, association_id)
url = request.REQUEST.get(REDIRECT_FIELD_NAME, '') or \
- setting('SOCIAL_AUTH_DISCONNECT_REDIRECT_URL') or \
+ backend_setting(backend, 'SOCIAL_AUTH_DISCONNECT_REDIRECT_URL') or \
DEFAULT_REDIRECT
return HttpResponseRedirect(url)
else:
url = redirect_value or DEFAULT_REDIRECT
else:
- url = setting('SOCIAL_AUTH_INACTIVE_USER_URL', LOGIN_ERROR_URL)
+ url = backend_setting(backend, 'SOCIAL_AUTH_INACTIVE_USER_URL',
+ LOGIN_ERROR_URL)
else:
msg = setting('LOGIN_ERROR_MESSAGE', None)
if msg:
messages.error(request, msg)
- url = LOGIN_ERROR_URL
+ url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL)
return HttpResponseRedirect(url)