-import time
-
from django.contrib.auth.models import User
from manifoldapi.manifoldapi import ManifoldAPI, ManifoldException, ManifoldResult
from myslice.settings import config, logger, DEBUG
-# from unfold.sessioncache import SessionCache
+from portal.actions import authority_check_pis
-# Name my backend 'ManifoldBackend'
class ManifoldBackend:
# Create an authentication method
person = {}
try:
- username = token['username']
+ email = token['username']
+ username = email.split('@')[-1]
password = token['password']
request = token['request']
- auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
- api = ManifoldAPI(auth)
+ auth = {'AuthMethod': 'password', 'Username': email, 'AuthString': password}
+ api = ManifoldAPI(config.manifold_url(), auth)
sessions_result = api.forward(Query.create('local:session').to_dict())
sessions = sessions_result.ok_value()
if not sessions:
logger.error("GetSession failed: {}".format(sessions_result.error()))
- return
+ return None
session = sessions[0]
logger.debug("SESSION : {}".format(session.keys()))
persons = persons_result.ok_value()
if not persons:
logger.error("GetPersons failed: {}".format(persons_result.error()))
- return
+ return None
person = persons[0]
logger.debug("PERSON : {}".format(person))
try:
# Check if the user exists in Django's local database
- user = User.objects.get(username=username)
+ user = User.objects.get(email=email)
except User.DoesNotExist:
# Create a user in Django's local database
- user = User.objects.create_user(username, username, 'passworddoesntmatter')
+ user = User.objects.create_user(username, email, 'passworddoesntmatter')
user.email = person['email']
if 'firstname' in person:
if 'lastname' in person:
user.last_name = person['lastname']
+ user.pi = authority_check_pis (request, user.email)
+ request.session['user'] = {'email':user.email,'pi':user.pi,'firstname':user.first_name,'lastname':user.last_name}
return user
# Required for your backend to work properly - unchanged in most scenarios