attach manifold_session and manifold_person to django's request.session
[unfold.git] / auth / manifoldbackend.py
index f548b43..da3c23f 100644 (file)
@@ -11,18 +11,23 @@ class ManifoldBackend:
 
     # Create an authentication method
     # This is called by the standard Django login procedure
-    def authenticate(self, username=None, password=None):
-        if not username or not password:
+    def authenticate(self, token=None):
+        if not token:
             return None
 
         try:
+            username = token['username']
+            password = token['password']
+            request = token['request']
+
             auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
             api = ManifoldAPI(auth)
             # Authenticate user and get session key
             session = api.GetSession()
             if not session : 
                 return None
-
+            
+            request.session['manifold_session'] = session
             #self.session = session
             # Change GetSession() at some point to return expires as well
             expires = time.time() + (24 * 60 * 60)
@@ -32,18 +37,21 @@ class ManifoldBackend:
             #self.api = api
 
             # Get account details
-            person = api.GetPersons(auth)
+            person = api.GetPersons(auth)[0]
+            request.session['manifold_person'] = person
             #self.person = person[0]
         except:
             return None
 
         try:
             # Check if the user exists in Django's local database
-            user = User.objects.get(email=username)
+            user = User.objects.get(username=username)
         except User.DoesNotExist:
             # Create a user in Django's local database
-            user = User.objects.create_user(time.time(), username, 'passworddoesntmatter')
-
+            user = User.objects.create_user(username, username, 'passworddoesntmatter')
+            user.first_name = person['first_name']
+            user.last_name = person['last_name']
+            user.email = person['email']
         return user
 
     # Required for your backend to work properly - unchanged in most scenarios