def logout(request): """ Log out the user (but keep other session info) """ try: del request.session['user_data'] except: pass MsgMgr.push(request, 'You have successfully been logged out.', 1) lurl = cas_url + 'logout?' + urlencode({'service': our_site}) return HttpResponseRedirect(lurl)
def login(request): """ Conduct login of user using a CAS system """ if request.method == 'GET' and 'ticket' in request.GET: if request.session.test_cookie_worked(): request.session.delete_test_cookie() try: ticket = request.GET.get('ticket', None) params = urllib.urlencode({'service':our_site_validate,'ticket':ticket}) validation = urllib2.urlopen(cas_url+'/validate?'+params).readlines() if len(validation) == 2 and re.match('yes', validation[0]) != None: netid = validation[1].strip() request.session['user_data'] = login_user(netid) if not request.session['user_data'].user_last_login: request.session['user_data'].set_logged_in() MsgMgr.push(request, 'It looks like you\'re new here. Please confirm the information below, and then we\'ll send you along.', 1) #Future Feature: For new users, add tips to top of page for first-time visit MsgMgr.push(request, 'This page will show you updates.',2,msg_to_page='/user/messages') MsgMgr.push(request, 'This page will show you events you\'ve added to your calendar.',2,msg_to_page='/user/events') return HttpResponseRedirect('/user?newbie=True') request.session['user_data'].set_logged_in() MsgMgr.push(request, 'Welcome back, %s!' % (request.session['user_data'].casual_name()), 1) else: MsgMgr.push(request, 'You could not be logged in.', 0) return HttpResponseRedirect("/") if 'login_redirect' in request.session: referrer = request.session['login_redirect'] del request.session['login_redirect'] return HttpResponseRedirect(referrer) else: return HttpResponseRedirect(our_site) except: MsgMgr.push(request, 'Login failed.', 0) return HttpResponseRedirect(our_site) else: return HttpResponseRedirect('/nocookie') else: return login_redirect(request)