Added user data update in shibauthBackend
[flowspy] / djangobackends / shibauthBackend.py
1 # -*- coding: utf-8 -*- vim:encoding=utf-8:
2 # vim: tabstop=4:shiftwidth=4:softtabstop=4:expandtab
3
4 from django.contrib.auth.models import User, UserManager, Permission, Group
5 from django.conf import settings
6 from flowspy.peers.models import *
7 from flowspy.accounts.models import * 
8
9 class shibauthBackend:
10     def authenticate(self, **kwargs):
11         
12         username = kwargs.get('username')
13         firstname = kwargs.get('firstname')
14         lastname = kwargs.get('lastname')
15         mail = kwargs.get('mail')
16         affiliation = kwargs.get('affiliation')
17         organization = kwargs.get('organization')
18         user = self._auth_user(username, firstname, lastname, mail, affiliation, organization)
19         if not user:
20             return None
21         return user
22
23     def _auth_user(self, username, firstname, lastname, mail, affiliation, organization):
24
25         try:
26             user = User.objects.get(username__exact=username)
27             user.mail = mail
28             user.first_name = firstname
29             user.last_name = lastname
30             user.save()
31         # The user did not exist. Create one with no privileges
32         except:
33             user = User.objects.create_user(username, mail, None)
34             user.first_name = firstname
35             user.last_name = lastname
36             user.is_staff = False
37             user.is_superuser = False
38 #            if organization == settings.SHIB_ADMIN_DOMAIN:
39 #                user.is_staff = True
40 #                user.is_superuser = True
41             user.is_active = True
42         try:
43             peer = Peer.objects.get(domain_name=organization)
44             up = UserProfile.objects.get_or_create(user=user,peer=peer)
45         except:
46             return False
47         return user
48
49     def get_user(self, user_id):
50         try:
51             return User.objects.get(pk=user_id)
52         except User.DoesNotExist:
53             return None