diff options
Diffstat (limited to 'coip/apps/auth/views.py')
-rw-r--r-- | coip/apps/auth/views.py | 62 |
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) |