summaryrefslogtreecommitdiff
path: root/coip/apps/auth/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'coip/apps/auth/views.py')
-rw-r--r--coip/apps/auth/views.py62
1 files changed, 30 insertions, 32 deletions
diff --git a/coip/apps/auth/views.py b/coip/apps/auth/views.py
index 6dd311d..18b4430 100644
--- a/coip/apps/auth/views.py
+++ b/coip/apps/auth/views.py
@@ -4,13 +4,14 @@ Created on Jul 5, 2010
@author: leifj
'''
from django.http import HttpResponseRedirect
-from coip.apps.userprofile.models import UserProfile
+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)
@@ -28,47 +29,44 @@ def meta1(request,attr):
def accounts_login_federated(request):
if request.user.is_authenticated():
- profile,created = UserProfile.objects.get_or_create(identifier=request.user.username)
- if created:
- profile.identifier = request.user.username
- profile.user = request.user
- profile.save()
-
+ user = request.user
+ profile = user.get_profile()
+ profile.identifier = request.user.username
+ idp = meta1(request,'Shib-Identity-Provider')
+ profile.idp = idp
- update = False
cn = meta1(request,'cn')
+ fn = meta1(request,'givenName')
+ ln = meta1(request,'sn')
+ mail = meta1(request,'mail')
+
if not cn:
cn = meta1(request,'displayName')
- logging.warn(cn)
- if not cn:
- fn = meta1(request,'givenName')
- ln = meta1(request,'sn')
- if fn and ln:
- cn = "%s %s" % (fn,ln)
+ 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
- mail = meta1(request,'mail')
-
- idp = meta1(request,'Shib-Identity-Provider')
-
- for attrib_name, meta_value in (('display_name',cn),('email',mail),('idp',idp)):
- attrib_value = getattr(profile, attrib_name)
- if meta_value and not attrib_value:
- setattr(profile,attrib_name,meta_value)
- update = True
+ if cn:
+ profile.display_name = cn
- if request.user.password == "":
- request.user.password = "(not used for federated logins)"
- update = True
-
- if update:
- request.user.save()
+ user.set_unusable_password()
- # Allow auto_now to kick in for the lastupdated field
- #profile.lastupdated = datetime.datetime.now()
+ 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)