Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ 5c8cc64e

History | View | Annotate | Download (1.9 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.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