Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ d4c9f39f

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
        username = kwargs.get('username')
12
        firstname = kwargs.get('firstname')
13
        lastname = kwargs.get('lastname')
14
        mail = kwargs.get('mail')
15
        affiliation = kwargs.get('affiliation')
16
        organization = kwargs.get('organization')
17
        try:
18
            user = self._auth_user(username, firstname, lastname, mail, affiliation, organization)
19
        except:
20
            return None
21
        if not user:
22
            return None
23
        return user
24

    
25
    def _auth_user(self, username, firstname, lastname, mail, affiliation, organization):
26

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

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