Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ 5366dc62

History | View | Annotate | Download (2.1 kB)

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.email = mail
28
            user.first_name = firstname
29
            user.last_name = lastname
30
#            if organization == settings.SHIB_ADMIN_DOMAIN:
31
#                user.is_staff = True
32
#                user.is_superuser = True
33
            user.is_active = True
34
            user.save()
35
        # The user did not exist. Create one with no privileges
36
        except:
37
            
38
            user = User.objects.create_user(username, mail, None)
39
            user.first_name = firstname
40
            user.last_name = lastname
41
            user.is_staff = False
42
            user.is_superuser = False
43
#            if organization == settings.SHIB_ADMIN_DOMAIN:
44
#                user.is_staff = True
45
#                user.is_superuser = True
46
            user.is_active = True
47
            user.save()
48
        try:
49
            peer = Peer.objects.get(domain_name=organization)
50
            up = UserProfile.objects.get_or_create(user=user,peer=peer)
51
        except:
52
            return False
53
        return user
54

    
55
    def get_user(self, user_id):
56
        try:
57
            return User.objects.get(pk=user_id)
58
        except User.DoesNotExist:
59
            return None