Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ 5366dc62

History | View | Annotate | Download (2.1 kB)

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