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

View file

@ -9,7 +9,8 @@
{% block css %}{% endblock %}
-->
</style>
</head><body {% block body_attributes %}{% endblock %}><center>
</head><body {% block body_attributes %}{% endblock %}>
<center>
<table border=0 cellpadding=0 cellspacing=0>
<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>
@ -28,6 +29,11 @@
</tr>
</table>
</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>
<!-- end new headers and layout -->
<div id="content">
@ -35,10 +41,6 @@
{% block main_content %}{% endblock %}
</div>
<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>
{% include "debug.html" %}
</body>

View file

@ -1,8 +1,12 @@
{% extends "base.html" %}
{% block content %}
<p>
{{ me.person_or_org_tag }}
<h1>Internet Drafts</h1>
Hello, {{ me }}!
<h1>Internet Drafts that you Author (probably useless but hey)</h1>
<ul>
{% for doc in me.idauthors_set.all %}
<li>{{ doc.document.filename }}: {{ doc.document.status }} / {{ doc.document.idstate }}
{% endfor %}
</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'^ipr/', include('ietf.ipr.urls')),
(r'^meeting/', include('ietf.meeting.urls')),
(r'^accounts/', include('ietf.ietfauth.urls')),
(r'^$', ietf.views.apps),