git://git.onelab.eu
/
myslice.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manifoldapi now expects the URL as an argument to its constructor
[myslice.git]
/
localauth
/
manifoldbackend.py
diff --git
a/localauth/manifoldbackend.py
b/localauth/manifoldbackend.py
index
9c19c9b
..
8c8f0f3
100644
(file)
--- a/
localauth/manifoldbackend.py
+++ b/
localauth/manifoldbackend.py
@@
-7,6
+7,10
@@
from manifold.core.query import Query
from myslice.settings import config, logger, DEBUG
from myslice.settings import config, logger, DEBUG
+from portal.actions import authority_check_pis
+
+# from unfold.sessioncache import SessionCache
+
# Name my backend 'ManifoldBackend'
class ManifoldBackend:
# Name my backend 'ManifoldBackend'
class ManifoldBackend:
@@
-19,22
+23,24
@@
class ManifoldBackend:
person = {}
try:
person = {}
try:
- username = token['username']
+ email = token['username']
+ username = email.split('@')[-1]
password = token['password']
request = token['request']
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()))
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]
session = sessions[0]
- logger.debug("SESSION : {}".format(session))
+ logger.debug("SESSION : {}".format(session
.keys()
))
# Change to session authentication
api.auth = {'AuthMethod': 'session', 'session': session['session']}
# Change to session authentication
api.auth = {'AuthMethod': 'session', 'session': session['session']}
+ #api.auth = session_auth
self.api = api
# Get account details
self.api = api
# Get account details
@@
-43,27
+49,31
@@
class ManifoldBackend:
persons = persons_result.ok_value()
if not persons:
logger.error("GetPersons failed: {}".format(persons_result.error()))
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))
person = persons[0]
logger.debug("PERSON : {}".format(person))
+
+ request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': session['expires']}
+
#logger.info("{} {} <{}> logged in"\
# .format(person['config']['first_name'], person['config']['last_name'], person['config']['email']))
#logger.info("{} {} <{}> logged in"\
# .format(person['config']['first_name'], person['config']['last_name'], person['config']['email']))
- request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': session['expires']}
+ #SessionCache().store_auth(request, session_auth)
+
except ManifoldException as e:
logger.error("ManifoldException in Auth Backend: {}".format(e.manifold_result))
except Exception as e:
logger.error("Exception in Manifold Auth Backend: {}".format(e))
import traceback
except ManifoldException as e:
logger.error("ManifoldException in Auth Backend: {}".format(e.manifold_result))
except Exception as e:
logger.error("Exception in Manifold Auth Backend: {}".format(e))
import traceback
-
traceback.print_exc(
)
+
logger.error(traceback.format_exc()
)
return None
try:
# Check if the user exists in Django's local database
return None
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
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:
user.email = person['email']
if 'firstname' in person:
@@
-71,6
+81,8
@@
class ManifoldBackend:
if 'lastname' in person:
user.last_name = person['lastname']
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
return user
# Required for your backend to work properly - unchanged in most scenarios