Allow login/logout/password change. The initial view once logged

in (unless it's a forced login) will be the (incomplete) "my" view.
Username and logout link are in the upper right corner while logged
in.
 - Legacy-Id: 163
This commit is contained in:
Bill Fenner 2007-05-24 20:18:11 +00:00
parent 78186c7406
commit cb94159896
6 changed files with 64 additions and 24 deletions

21
ietf/ietfauth/urls.py Normal file
View file

@ -0,0 +1,21 @@
from django.conf.urls.defaults import *
from ietf.my.views import my
urlpatterns = patterns('django.contrib.auth.views',
(r'^login/$', 'login'),
# need to provide templates for logout, password_change,
# password_change_done
# right now they use the admin templates, which are not
# really appropriate.
(r'^logout/$', 'logout'),
(r'^password_change/$', 'password_change'),
(r'^password_change/done/$', 'password_change_done'),
# Built-in password reset changes before validation
# so we want to implement a scheme similar to henrik's
# loginmgr.
#(r'^password_reset/$', 'password_reset'),
#(r'^password_reset/done/$', 'password_reset_done'),
)
urlpatterns += patterns('',
(r'^profile/$', my)
)

View file

@ -1,21 +1,14 @@
from django.http import HttpResponse,HttpResponseRedirect from django.http import HttpResponse,HttpResponseRedirect
from django import newforms as forms from django import newforms as forms
from django.template import RequestContext, Context, loader from django.template import RequestContext
from django.shortcuts import get_object_or_404 from django.shortcuts import render_to_response
from ietf.idtracker.models import PersonOrOrgInfo, EmailAddress from ietf.idtracker.models import PersonOrOrgInfo
def my(request, addr=None): def my(request, addr=None):
if addr is None: if request.user:
# get email address from logged in user person = request.user.get_profile().person
return else:
person = PersonOrOrgInfo.objects.filter(emailaddresses__email_address=addr).distinct() person = PersonOrOrgInfo.objects.distinct().get(emailaddresses__email_address=addr)
if len(person) != 1: return render_to_response('my/my.html', {
if len(person) == 0: 'me': person,
raise Http404 }, context_instance=RequestContext(request))
# multiple people matched!
return "Oops"
t = loader.get_template('my/my.html')
c = RequestContext(request, {
'me': person[0],
})
return HttpResponse(t.render(c))

View file

@ -9,7 +9,8 @@
{% block css %}{% endblock %} {% block css %}{% endblock %}
--> -->
</style> </style>
</head><body {% block body_attributes %}{% endblock %}><center> </head><body {% block body_attributes %}{% endblock %}>
<center>
<table border=0 cellpadding=0 cellspacing=0> <table border=0 cellpadding=0 cellspacing=0>
<tr> <tr>
<td><a href="http://www.ietf.org/home.html"><img src="https://www1.ietf.org/images/header/ietflogo_sm.gif" border="0"></a></td> <td><a href="http://www.ietf.org/home.html"><img src="https://www1.ietf.org/images/header/ietflogo_sm.gif" border="0"></a></td>
@ -28,6 +29,11 @@
</tr> </tr>
</table> </table>
</center> </center>
{% if user.is_authenticated %}
<span style="float: right; font-size: 80%;">Logged in as {{ user }}
|
<a href="/accounts/logout/">Log Out</a></span>
{% endif %}
<hr> <hr>
<!-- end new headers and layout --> <!-- end new headers and layout -->
<div id="content"> <div id="content">
@ -35,10 +41,6 @@
{% block main_content %}{% endblock %} {% block main_content %}{% endblock %}
</div> </div>
<hr/> <hr/>
<address>
This page provided by Bill Fenner's proof-of-concept IETF web page front
ends.
</address>
<a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangomade124x25.gif" border="0" alt="Made with Django." title="Made with Django." /></a> <a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangomade124x25.gif" border="0" alt="Made with Django." title="Made with Django." /></a>
{% include "debug.html" %} {% include "debug.html" %}
</body> </body>

View file

@ -1,8 +1,12 @@
{% extends "base.html" %}
{% block content %}
<p> <p>
{{ me.person_or_org_tag }} Hello, {{ me }}!
<h1>Internet Drafts</h1> <h1>Internet Drafts that you Author (probably useless but hey)</h1>
<ul> <ul>
{% for doc in me.idauthors_set.all %} {% for doc in me.idauthors_set.all %}
<li>{{ doc.document.filename }}: {{ doc.document.status }} / {{ doc.document.idstate }} <li>{{ doc.document.filename }}: {{ doc.document.status }} / {{ doc.document.idstate }}
{% endfor %} {% endfor %}
</ul> </ul>
{% endblock %}

View file

@ -0,0 +1,19 @@
{% extends "base.html" %}
{% block content %}
{% if form.has_errors %}
<p>Your username and password didn't match our records. Please try again.</p>
{% endif %}
<form method="post" action=".">
<table>
<tr><td><label for="id_username">Username (or email address):</label></td><td>{{ form.username }}</td></tr>
<tr><td><label for="id_password">Password:</label></td><td>{{ form.password }}</td></tr>
</table>
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endblock %}

View file

@ -24,6 +24,7 @@ urlpatterns = patterns('',
(r'^(?P<path>public|cgi-bin)/', include('ietf.redirects.urls')), (r'^(?P<path>public|cgi-bin)/', include('ietf.redirects.urls')),
(r'^ipr/', include('ietf.ipr.urls')), (r'^ipr/', include('ietf.ipr.urls')),
(r'^meeting/', include('ietf.meeting.urls')), (r'^meeting/', include('ietf.meeting.urls')),
(r'^accounts/', include('ietf.ietfauth.urls')),
(r'^$', ietf.views.apps), (r'^$', ietf.views.apps),