Commit 759dfd77b0abaaedb0011a1e0f27bbf13db9beaa

Authored by Alexandre Barbosa
Committed by Sergio Oliveira
1 parent 66797bb2

Implemented Password Change Feature

colab/accounts/urls.py
... ... @@ -4,10 +4,20 @@ from django.conf.urls import patterns, url
4 4 from .views import (UserProfileDetailView, UserProfileUpdateView, LoginView,
5 5 ManageUserSubscriptionsView, ChangeXMPPPasswordView)
6 6  
  7 +from accounts import views
  8 +from django.contrib.auth import views as auth_views
7 9  
8 10 urlpatterns = patterns('',
9 11 url(r'^register/$', 'colab.accounts.views.signup', name='signup'),
10 12  
  13 + url(r'^change-password/?$',
  14 + auth_views.password_change,
  15 + {'template_name': 'registration/password_change.html'},
  16 + name='password_change'),
  17 +
  18 + url(r'^change-password-done/?$',
  19 + 'accounts.views.password_changed', name='password_change_done'),
  20 +
11 21 url(r'^change-password/$',
12 22 ChangeXMPPPasswordView.as_view(), name='change_password'),
13 23  
... ...
colab/accounts/views.py
... ... @@ -275,3 +275,10 @@ class ChangeXMPPPasswordView(UpdateView):
275 275 _("You've changed your password successfully!")
276 276 )
277 277 return response
  278 +
  279 +def password_changed(request):
  280 + messages.success(request, _('Your password has been updated!'))
  281 +
  282 + user = request.user
  283 +
  284 + return redirect('user_profile_update', username=user.username)
... ...
src/accounts/templates/registration/password_change.html 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +{% extends "base.html" %}
  2 +{% load i18n %}
  3 +{% block main-content %}
  4 +
  5 +<div class="row">
  6 + {% if form.errors %}
  7 + <div class="alert alert-danger">
  8 + <b>
  9 + {% if form.errors.items|length == 1 %}{% trans "Please correct the error below and try again." %}{% else %}{% trans "Please correct the errors below and try again." %}{% endif %}
  10 + </b>
  11 + </div>
  12 + {% endif %}
  13 +</div>
  14 +
  15 +<br>
  16 +<form action="" method="post" role="form" class="form-horizontal signup">
  17 + {% csrf_token %}
  18 +
  19 + <div class="row">
  20 + <div class="col-md-4 col-md-offset-4 col-lg-4 col-lg-offset-4 col-sm-8 col-sm-offset-2 col-xs-12">
  21 + <div class="panel panel-default">
  22 + <div class="panel-heading"><h3 class="panel-title">{% trans 'Change Password' %}</h3></div>
  23 +
  24 + <div class="panel-body">
  25 + <div class="form-group{% if form.old_password.errors %} alert alert-danger has-error{% endif %}">
  26 + {{ form.old_password.label_tag }}
  27 + <input class="form-control" id="id_old_password" maxlength="254" name="old_password" type="password">
  28 + {{ form.old_password.errors }}
  29 + </div>
  30 +
  31 + <div class="form-group{% if form.new_password1.errors %} alert alert-danger has-error{% endif %}">
  32 + {{ form.new_password1.label_tag }}
  33 + <input class="form-control" id="id_new_password1" maxlength="254" name="new_password1" type="password">
  34 + {{ form.new_password1.errors }}
  35 + </div>
  36 +
  37 + <div class="form-group{% if form.new_password2.errors %} alert alert-danger has-error{% endif %}">
  38 + {{ form.new_password2.label_tag }}
  39 + <input class="form-control" id="id_new_password2" maxlength="254" name="new_password2" type="password">
  40 + {{ form.new_password2.errors }}
  41 + </div>
  42 +
  43 + </div>
  44 + </div>
  45 + </div>
  46 + </div>
  47 +
  48 + <div class="row">
  49 + <div class="submit">
  50 + <input type="submit" value="{% trans 'Change my password' %}" class="btn btn-primary btn-lg btn-block">
  51 + </div>
  52 + <script type="text/javascript">document.getElementById("id_old_password").focus();</script>
  53 + </div>
  54 +</form>
  55 +
  56 +{% endblock %}
... ...