1 # import the User object
2 from django.contrib.auth.models import User
3 from engine.manifoldapi import ManifoldAPI
6 # import time - this is used to create Django's internal username
9 # Name my backend 'ManifoldBackend'
10 class ManifoldBackend:
12 # Create an authentication method
13 # This is called by the standard Django login procedure
14 def authenticate(self, token=None):
19 username = token['username']
20 password = token['password']
21 request = token['request']
23 auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
24 api = ManifoldAPI(auth)
25 # Authenticate user and get session key
26 session = api.GetSession()
30 #self.session = session
31 # Change GetSession() at some point to return expires as well
32 expires = time.time() + (24 * 60 * 60)
34 # Change to session authentication
35 api.auth = {'AuthMethod': 'session', 'session': session}
39 person = api.GetPersons(auth)[0]
42 request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': expires}
47 # Check if the user exists in Django's local database
48 user = User.objects.get(username=username)
49 except User.DoesNotExist:
50 # Create a user in Django's local database
51 user = User.objects.create_user(username, username, 'passworddoesntmatter')
52 user.first_name = person['first_name']
53 user.last_name = person['last_name']
54 user.email = person['email']
57 # Required for your backend to work properly - unchanged in most scenarios
58 def get_user(self, user_id):
60 return User.objects.get(pk=user_id)
61 except User.DoesNotExist: