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 |