Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ 049a5a10

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

    
45
    def get_user(self, user_id):
46
        try:
47
            return User.objects.get(pk=user_id)
48
        except User.DoesNotExist:
49
            return None