break authentication loop on egonomy
authorymh <ymh.work@gmail.com>
Tue, 01 Apr 2014 17:24:31 +0200
changeset 284 33183949c9b8
parent 283 d6bc9a2cc131
child 285 7ecfa9c9f2d1
break authentication loop on egonomy
src/egonomy/auth/backends.py
src/egonomy/config.py.tmpl
src/egonomy/settings.py
src/egonomy/views.py
--- a/src/egonomy/auth/backends.py	Tue Apr 01 14:39:26 2014 +0200
+++ b/src/egonomy/auth/backends.py	Tue Apr 01 17:24:31 2014 +0200
@@ -9,6 +9,7 @@
 
 from django.conf import settings
 from django.contrib.auth import get_user_model
+from django.http.request import HttpRequest
 
 from egonomy.auth import clean_egonomy_username, get_http_session
 
@@ -20,8 +21,15 @@
     Authenticate against egonomy.
     """
 
-    def authenticate(self, username=None, password=None):
+    def authenticate(self, username=None, password=None, **kwargs):
+
+        request_meta = getattr(kwargs.get('request', HttpRequest()), 'META', {})
 
+        logger.debug("Egonomy backend : REMOTE_ADDR : %r - REMOTE_HOST : %r" % (request_meta.get('REMOTE_ADDR',''), request_meta.get('REMOTE_HOST','')))
+
+        if request_meta.get('REMOTE_ADDR', None) and request_meta.get('REMOTE_ADDR', None) == getattr(settings, "EGONOMY_SERVER_IP", ''):
+            logger.debug("Egonomy backend : IP is %s - return None" % getattr(settings, "EGONOMY_SERVER_IP", ''))
+            return None
         
         User = get_user_model()
         login_url = getattr(settings, "EGONOMY_LOGIN_URL", None)
--- a/src/egonomy/config.py.tmpl	Tue Apr 01 14:39:26 2014 +0200
+++ b/src/egonomy/config.py.tmpl	Tue Apr 01 17:24:31 2014 +0200
@@ -154,7 +154,8 @@
 EMAIL_PORT = %(email_port)d
 
 EGONOMY_URL = '#'
-EGONOMY_LOGIN_URL =''
+EGONOMY_SERVER_IP = ''
+EGONOMY_LOGIN_URL = ''
 EGONOMY_TOKEN_NAME = 'egonomytoken'
 EGONOMY_TOKEN_CHECK_URL = ''
 
--- a/src/egonomy/settings.py	Tue Apr 01 14:39:26 2014 +0200
+++ b/src/egonomy/settings.py	Tue Apr 01 17:24:31 2014 +0200
@@ -194,6 +194,7 @@
 TASTYPIE_DEFAULT_FORMATS = ['json']
 
 EGONOMY_URL = ''
+EGONOMY_SERVER_IP = ''
 EGONOMY_LOGIN_URL =''
 EGONOMY_SALT_LENGTH = 12
 EGONOMY_TOKEN_NAME = 'egonomytoken'
--- a/src/egonomy/views.py	Tue Apr 01 14:39:26 2014 +0200
+++ b/src/egonomy/views.py	Tue Apr 01 17:24:31 2014 +0200
@@ -868,7 +868,7 @@
         password = request.POST.get('password', '').strip()
         if username and password:
             # Test username/password combination
-            user = authenticate(username=username, password=password)
+            user = authenticate(username=username, password=password, request=request)
             # Found a match
             if user is not None:
                 # User is active