Statistics
| Branch: | Tag: | Revision:

root / djangobackends / shibauthBackend.py @ e0a35792

History | View | Annotate | Download (1.4 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
7 97e42c7d Leonidas Poulopoulos
class shibauthBackend:
8 97e42c7d Leonidas Poulopoulos
    def authenticate(self, **kwargs):
9 97e42c7d Leonidas Poulopoulos
        username = kwargs.get('username')
10 97e42c7d Leonidas Poulopoulos
        firstname = kwargs.get('firstname')
11 97e42c7d Leonidas Poulopoulos
        lastname = kwargs.get('lastname')
12 97e42c7d Leonidas Poulopoulos
        mail = kwargs.get('mail')
13 9452bd72 Leonidas Poulopoulos
        try:
14 e0a35792 Leonidas Poulopoulos
            user = self._auth_user(username, firstname, lastname, mail)
15 9452bd72 Leonidas Poulopoulos
        except:
16 9452bd72 Leonidas Poulopoulos
            return None
17 97e42c7d Leonidas Poulopoulos
        if not user:
18 97e42c7d Leonidas Poulopoulos
            return None
19 97e42c7d Leonidas Poulopoulos
        return user
20 97e42c7d Leonidas Poulopoulos
21 e0a35792 Leonidas Poulopoulos
    def _auth_user(self, username, firstname, lastname, mail):
22 97e42c7d Leonidas Poulopoulos
23 97e42c7d Leonidas Poulopoulos
        try:
24 97e42c7d Leonidas Poulopoulos
            user = User.objects.get(username__exact=username)
25 5366dc62 Leonidas Poulopoulos
            user.email = mail
26 5366dc62 Leonidas Poulopoulos
            user.first_name = firstname
27 5366dc62 Leonidas Poulopoulos
            user.last_name = lastname
28 5366dc62 Leonidas Poulopoulos
            user.save()
29 97e42c7d Leonidas Poulopoulos
        # The user did not exist. Create one with no privileges
30 e0a35792 Leonidas Poulopoulos
        except: 
31 97e42c7d Leonidas Poulopoulos
            user = User.objects.create_user(username, mail, None)
32 97e42c7d Leonidas Poulopoulos
            user.first_name = firstname
33 97e42c7d Leonidas Poulopoulos
            user.last_name = lastname
34 97e42c7d Leonidas Poulopoulos
            user.is_staff = False
35 97e42c7d Leonidas Poulopoulos
            user.is_superuser = False
36 d4c9f39f Leonidas Poulopoulos
            user.is_active = False
37 5366dc62 Leonidas Poulopoulos
            user.save()
38 e0a35792 Leonidas Poulopoulos
39 97e42c7d Leonidas Poulopoulos
        return user
40 97e42c7d Leonidas Poulopoulos
41 97e42c7d Leonidas Poulopoulos
    def get_user(self, user_id):
42 97e42c7d Leonidas Poulopoulos
        try:
43 97e42c7d Leonidas Poulopoulos
            return User.objects.get(pk=user_id)
44 97e42c7d Leonidas Poulopoulos
        except User.DoesNotExist:
45 97e42c7d Leonidas Poulopoulos
            return None