Added basic password reset function

This commit is contained in:
2010-03-14 23:00:35 +00:00
parent d987728352
commit ac62f9feb7
5 changed files with 62 additions and 2 deletions

View File

@@ -11,6 +11,8 @@ urlpatterns = patterns('',
(r'^profile/add/service', views.service_add),
(r'^profile/del/service/$', views.service_del),
(r'^profile/del/service/(?P<serviceid>\d+)/$', views.service_del),
(r'^profile/reset/service/(?P<serviceid>\d+)/$', views.service_reset),
(r'^profile/reset/service/(?P<serviceid>\d+)/(?P<accept>\d+)$', views.service_reset),
(r'^profile/add/reddit', views.reddit_add),
(r'^profile/del/reddit/$', views.reddit_del),
(r'^profile/del/reddit/(?P<redditid>\d+)/$', views.reddit_del),

View File

@@ -98,7 +98,7 @@ def service_add(request):
acc.service = form.cleaned_data['service']
acc.character = form.cleaned_data['character']
acc.password = hashlib.sha1('%s%s' % (form.cleaned_data['service'].name, settings.SECRET_KEY)).hexdigest()
acc.password = hashlib.sha1('%s%s' % (form.cleaned_data['character'].name, settings.SECRET_KEY)).hexdigest()
try:
acc.save()
@@ -128,6 +128,27 @@ def service_del(request, serviceid=0):
return HttpResponseRedirect(reverse('sso.views.profile'))
@login_required
def service_reset(request, serviceid=0, accept=0):
if serviceid > 0 :
try:
acc = ServiceAccount.objects.get(id=serviceid)
except ServiceAccount.DoesNotExist:
return HttpResponseRedirect(reverse('sso.views.profile'))
if acc.user == request.user:
if not accept:
return render_to_response('sso/serviceaccount_reset.html', locals())
passwd = hashlib.sha1('%s%s' % (acc.service_uid, settings.SECRET_KEY)).hexdigest()
api = acc.service.api_class
api.enable_user(acc.service_uid, passwd)
return render_to_response('sso/serviceaccount_resetcomplete.html', locals())
return HttpResponseRedirect(reverse('sso.views.profile'))
@login_required
def reddit_add(request):

View File

@@ -26,7 +26,7 @@ a new service click the Add Service link</p>
<td>{{ acc.service_uid }}</td>
<td>******</td>
<td>{{ acc.active }}</td>
<td><a href="/profile/del/service/{{ acc.id }}/">Delete</a>
<td><a href="/profile/del/service/{{ acc.id }}/">Delete</a> / <a href="/profile/reset/service/{{ acc.id }}/">Reset</a>
{% if acc.service.provide_login %}
&nbsp;/&nbsp;<a href="/profile/login/service/{{ acc.id }}/">Login</a>
{% endif %}

View File

@@ -0,0 +1,12 @@
{% extends "base.html" %}
{% block title %}Service Account Password Reset{% endblock %}
{% block content %}
<p>This service will reset your password for account {{ acc.service_uid }} on {{ acc.service }}. If you wish to continue please click the link
below.</p>
<p><a href="/profile/reset/service/{{ serviceid }}/1">Reset my Password</a></p>
{% endblock %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block title %}Service Account{% endblock %}
{% block content %}
{% if error %}
<div style="border: 1px solid #FF0000; background: #FF7D7D; width: 100%; text-align: center;">
<b>Error:</b> Your account has not been created. Either you already have a user on this service or a error has occured. If you think
this is incorrect please raise a bug on the tracker.
</div>
{% else %}
<p>Your account on {{ acc.service }} has been reset. Your login details are as follows:</p>
<table>
<tr><td>Username:</td><td>{{ acc.service_uid }}</td></tr>
<tr><td>Password:</td><td>{{ passwd }}</td></tr>
</table>
<p><b>Warning:</b> You password is random, please either note it down or once logged into the service change it to something you
will remember. Service passwords are not stored in the Auth system.</p>
<p><a href="/profile">Return to your profile page</a></p>
{% endif %}
{% endblock %}