from django.contrib.auth.models import User
-from manifold.manifoldapi import ManifoldAPI, ManifoldResult
+from manifoldapi.manifoldapi import ManifoldAPI, ManifoldException, ManifoldResult
+from manifold.core.query import Query
+
+from myslice.settings import config, logger, DEBUG
# Name my backend 'ManifoldBackend'
class ManifoldBackend:
def authenticate(self, token=None):
if not token:
return None
+
+ person = {}
try:
username = token['username']
auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
api = ManifoldAPI(auth)
- # Authenticate user and get session key
- # the new API would expect Get('local:session') instead
- session_result = api.GetSession()
- session = session_result.ok_value()
- if not session:
- print "GetSession failed",session_result.error()
+ sessions_result = api.forward(Query.create('local:session').to_dict())
+ sessions = sessions_result.ok_value()
+ if not sessions:
+ logger.error("GetSession failed", sessions_result.error())
return
+ session = sessions[0]
+ logger.debug("SESSION : %s" % session)
- print 'DEALING with session',session
- #self.session = session
- # Change GetSession() at some point to return expires as well
- expires = time.time() + (24 * 60 * 60)
-
# Change to session authentication
- api.auth = {'AuthMethod': 'session', 'session': session}
+ api.auth = {'AuthMethod': 'session', 'session': session['session']}
self.api = api
# Get account details
# the new API would expect Get('local:user') instead
- persons_result = api.GetPersons(auth)
+ persons_result = api.forward(Query.get('local:user').to_dict())
persons = persons_result.ok_value()
if not persons:
- print "GetPersons failed",persons_result.error()
+ logger.error("GetPersons failed",persons_result.error())
return
person = persons[0]
+ logger.debug("PERSON : %s" % person)
+ #logger.info("%s %s <%s> logged in" % (person['config']['first_name'], person['config']['last_name'], person['config']['email']))
- request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': expires}
- except:
+ request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': session['expires']}
+ except ManifoldException, e:
+ logger.error("Manifold Auth Backend: %s" % e.manifold_result)
+ except Exception, e:
+ logger.error("Manifold Auth Backend: %s" % e)
+ #import traceback
+ #traceback.print_exc()
return None
try:
except User.DoesNotExist:
# Create a user in Django's local database
user = User.objects.create_user(username, username, 'passworddoesntmatter')
- user.first_name = person['first_name']
- user.last_name = person['last_name']
user.email = person['email']
+
+ if 'firstname' in person:
+ user.first_name = person['firstname']
+ if 'lastname' in person:
+ user.last_name = person['lastname']
+
return user
# Required for your backend to work properly - unchanged in most scenarios