1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
'''
Created on Jul 5, 2010
@author: leifj
'''
from django.http import HttpResponseRedirect
from coip.apps.userprofile.models import UserProfile, home_name
from django.contrib.auth.models import User
from coip.apps.auth.utils import anonid
from coip.apps.name.models import lookup
import datetime
from django.views.decorators.cache import never_cache
import logging
from coip.apps.membership.models import add_member
def meta(request,attr):
v = request.META.get(attr)
if not v:
return None
values = filter(lambda x: x != "(null)",v.split(";"))
return values;
def meta1(request,attr):
v = meta(request,attr)
if v:
return v[0]
else:
return None
def accounts_login_federated(request):
if request.user.is_authenticated():
user = request.user
profile = user.get_profile()
profile.identifier = request.user.username
idp = meta1(request,'Shib-Identity-Provider')
profile.idp = idp
cn = meta1(request,'cn')
fn = meta1(request,'givenName')
ln = meta1(request,'sn')
mail = meta1(request,'mail')
if not cn:
cn = meta1(request,'displayName')
if not cn and (fn and ln):
cn = "%s %s" % (fn,ln)
if not cn:
cn = profile.identifier
if fn:
user.first_name = fn
if ln:
user.last_name = ln
if mail:
user.email = mail
if cn:
profile.display_name = cn
user.set_unusable_password()
if profile.home == None:
profile.home = home_name(user,autocreate=True)
profile.home.short = "%s (%s)" % (cn,profile.identifier)
profile.home.save()
user.save()
profile.save()
next = request.session.get("after_login_redirect", None)
if next is not None:
return HttpResponseRedirect(next)
else:
pass
return HttpResponseRedirect("/")
@never_cache
def logout(request):
from django.contrib.auth import logout
logout(request)
return HttpResponseRedirect("/Shibboleth.sso/Logout")
|