Skip to content

Commit cb94159

Browse files
committed
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
1 parent 78186c7 commit cb94159

6 files changed

Lines changed: 64 additions & 24 deletions

File tree

ietf/ietfauth/urls.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.conf.urls.defaults import *
2+
from ietf.my.views import my
3+
4+
urlpatterns = patterns('django.contrib.auth.views',
5+
(r'^login/$', 'login'),
6+
# need to provide templates for logout, password_change,
7+
# password_change_done
8+
# right now they use the admin templates, which are not
9+
# really appropriate.
10+
(r'^logout/$', 'logout'),
11+
(r'^password_change/$', 'password_change'),
12+
(r'^password_change/done/$', 'password_change_done'),
13+
# Built-in password reset changes before validation
14+
# so we want to implement a scheme similar to henrik's
15+
# loginmgr.
16+
#(r'^password_reset/$', 'password_reset'),
17+
#(r'^password_reset/done/$', 'password_reset_done'),
18+
)
19+
urlpatterns += patterns('',
20+
(r'^profile/$', my)
21+
)

ietf/my/views.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
11
from django.http import HttpResponse,HttpResponseRedirect
22
from django import newforms as forms
3-
from django.template import RequestContext, Context, loader
4-
from django.shortcuts import get_object_or_404
5-
from ietf.idtracker.models import PersonOrOrgInfo, EmailAddress
3+
from django.template import RequestContext
4+
from django.shortcuts import render_to_response
5+
from ietf.idtracker.models import PersonOrOrgInfo
66

77
def my(request, addr=None):
8-
if addr is None:
9-
# get email address from logged in user
10-
return
11-
person = PersonOrOrgInfo.objects.filter(emailaddresses__email_address=addr).distinct()
12-
if len(person) != 1:
13-
if len(person) == 0:
14-
raise Http404
15-
# multiple people matched!
16-
return "Oops"
17-
t = loader.get_template('my/my.html')
18-
c = RequestContext(request, {
19-
'me': person[0],
20-
})
21-
return HttpResponse(t.render(c))
8+
if request.user:
9+
person = request.user.get_profile().person
10+
else:
11+
person = PersonOrOrgInfo.objects.distinct().get(emailaddresses__email_address=addr)
12+
return render_to_response('my/my.html', {
13+
'me': person,
14+
}, context_instance=RequestContext(request))

ietf/templates/base.html

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
{% block css %}{% endblock %}
1010
-->
1111
</style>
12-
</head><body {% block body_attributes %}{% endblock %}><center>
12+
</head><body {% block body_attributes %}{% endblock %}>
13+
<center>
1314
<table border=0 cellpadding=0 cellspacing=0>
1415
<tr>
1516
<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,17 +29,18 @@
2829
</tr>
2930
</table>
3031
</center>
32+
{% if user.is_authenticated %}
33+
<span style="float: right; font-size: 80%;">Logged in as {{ user }}
34+
|
35+
<a href="/accounts/logout/">Log Out</a></span>
36+
{% endif %}
3137
<hr>
3238
<!-- end new headers and layout -->
3339
<div id="content">
3440
{% block content %}{% endblock %}
3541
{% block main_content %}{% endblock %}
3642
</div>
3743
<hr/>
38-
<address>
39-
This page provided by Bill Fenner's proof-of-concept IETF web page front
40-
ends.
41-
</address>
4244
<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>
4345
{% include "debug.html" %}
4446
</body>

ietf/templates/my/my.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
{% extends "base.html" %}
2+
3+
{% block content %}
14
<p>
2-
{{ me.person_or_org_tag }}
3-
<h1>Internet Drafts</h1>
5+
Hello, {{ me }}!
6+
<h1>Internet Drafts that you Author (probably useless but hey)</h1>
47
<ul>
58
{% for doc in me.idauthors_set.all %}
69
<li>{{ doc.document.filename }}: {{ doc.document.status }} / {{ doc.document.idstate }}
710
{% endfor %}
811
</ul>
12+
{% endblock %}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{% extends "base.html" %}
2+
3+
{% block content %}
4+
5+
{% if form.has_errors %}
6+
<p>Your username and password didn't match our records. Please try again.</p>
7+
{% endif %}
8+
9+
<form method="post" action=".">
10+
<table>
11+
<tr><td><label for="id_username">Username (or email address):</label></td><td>{{ form.username }}</td></tr>
12+
<tr><td><label for="id_password">Password:</label></td><td>{{ form.password }}</td></tr>
13+
</table>
14+
15+
<input type="submit" value="login" />
16+
<input type="hidden" name="next" value="{{ next }}" />
17+
</form>
18+
19+
{% endblock %}

ietf/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
(r'^(?P<path>public|cgi-bin)/', include('ietf.redirects.urls')),
2525
(r'^ipr/', include('ietf.ipr.urls')),
2626
(r'^meeting/', include('ietf.meeting.urls')),
27+
(r'^accounts/', include('ietf.ietfauth.urls')),
2728

2829
(r'^$', ietf.views.apps),
2930

0 commit comments

Comments
 (0)