X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=localauth%2Fmanifoldbackend.py;h=8c8f0f393ff060410fd07c998ad7b3cbf56bf9b6;hb=a948414844c79472807c5e66939a912a7b990433;hp=e52b1753ae1bdfc2374c89a3104b3ecb40307ea9;hpb=a8104de58940697d33f0f38cb3c866b7ecf6f4f4;p=myslice.git diff --git a/localauth/manifoldbackend.py b/localauth/manifoldbackend.py index e52b1753..8c8f0f39 100644 --- a/localauth/manifoldbackend.py +++ b/localauth/manifoldbackend.py @@ -7,6 +7,8 @@ from manifold.core.query import Query from myslice.settings import config, logger, DEBUG +from portal.actions import authority_check_pis + # from unfold.sessioncache import SessionCache # Name my backend 'ManifoldBackend' @@ -21,17 +23,18 @@ class ManifoldBackend: 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())) @@ -46,7 +49,7 @@ class ManifoldBackend: 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)) @@ -67,10 +70,10 @@ class ManifoldBackend: 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: @@ -78,6 +81,8 @@ class ManifoldBackend: 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