summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorprathamesh2016-03-09 00:02:39 +0530
committerprathamesh2016-03-09 15:27:03 +0530
commitedf173722f9d14dd32cd8dba381ede5973b52a70 (patch)
treedf19f9ffcac549c1986728cd822fd4fe1bfea22a
parent4874eb1e66c12269fa75849048afd2c9f129d5e3 (diff)
downloadonline_test-edf173722f9d14dd32cd8dba381ede5973b52a70.tar.gz
online_test-edf173722f9d14dd32cd8dba381ede5973b52a70.tar.bz2
online_test-edf173722f9d14dd32cd8dba381ede5973b52a70.zip
Forgot Password facility
Used django in-built views. Templates overridden. User enters email address and submits. The user receives an email with password reset link(one time link). The link contains a token generate using the current state of the user like user password. The link is verified each time when it is been requested. So the link will be invalid if the user has already changed the password using the link.(since the token is generated using current state of the user.) User resets his password via the link.
-rw-r--r--online_test/settings.py12
-rw-r--r--yaksh/templates/registration/password_reset_complete.html7
-rw-r--r--yaksh/templates/registration/password_reset_confirm.html17
-rw-r--r--yaksh/templates/registration/password_reset_done.html4
-rw-r--r--yaksh/templates/registration/password_reset_form.html12
-rw-r--r--yaksh/urls.py11
6 files changed, 62 insertions, 1 deletions
diff --git a/online_test/settings.py b/online_test/settings.py
index f96632b..3993744 100644
--- a/online_test/settings.py
+++ b/online_test/settings.py
@@ -88,3 +88,15 @@ USE_TZ = False
STATIC_URL = '/static/'
LOGIN_URL = '/exam/login'
+
+EMAIL_USE_TLS = False
+
+EMAIL_HOST = 'your_email_host'
+
+EMAIL_PORT = 'your_email_port'
+
+EMAIL_HOST_USER = 'email_host_user'
+
+DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
+
+TEMPLATE_DIRS = ['yaksh/templates',]
diff --git a/yaksh/templates/registration/password_reset_complete.html b/yaksh/templates/registration/password_reset_complete.html
new file mode 100644
index 0000000..0801d3b
--- /dev/null
+++ b/yaksh/templates/registration/password_reset_complete.html
@@ -0,0 +1,7 @@
+{% extends "base.html" %}
+{% block title %}Password reset complete{% endblock %}
+{% block pagetitle %} Online Test {% endblock %}
+{% block content %}
+<p>Your password has been reset. </p>
+<p><a href="{{ login_url }}">Log in</a></p>
+{% endblock %}
diff --git a/yaksh/templates/registration/password_reset_confirm.html b/yaksh/templates/registration/password_reset_confirm.html
new file mode 100644
index 0000000..5566499
--- /dev/null
+++ b/yaksh/templates/registration/password_reset_confirm.html
@@ -0,0 +1,17 @@
+{% extends "base.html" %}
+{% block title %}Reset Password{% endblock %}
+{% block pagetitle %} Online Test {% endblock %}
+{% block formtitle %} Reset password {% endblock %}
+
+{% block content %}
+ {% if validlink %}
+ <p>Please enter your new password twice so we can verify you typed it in correctly</p>.
+ <form method="post">
+ {% csrf_token %}
+ {{ form.as_p }}
+ <button class= "btn" type="submit">Submit</button>
+ </form>
+ {% else %}
+ <p>This reset link is no longer valid!</p>
+ {% endif %}
+{% endblock %}
diff --git a/yaksh/templates/registration/password_reset_done.html b/yaksh/templates/registration/password_reset_done.html
new file mode 100644
index 0000000..ace3cc9
--- /dev/null
+++ b/yaksh/templates/registration/password_reset_done.html
@@ -0,0 +1,4 @@
+{% extends "base.html" %}
+{% block title %}Password reset successful{% endblock %}
+{% block pagetitle %} Online Test {% endblock %}
+{% block formtitle %} Instruction for setting new password has been mailed to your registered email address {% endblock %}
diff --git a/yaksh/templates/registration/password_reset_form.html b/yaksh/templates/registration/password_reset_form.html
new file mode 100644
index 0000000..0dbaf09
--- /dev/null
+++ b/yaksh/templates/registration/password_reset_form.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% block title %} Forgot Password {% endblock %}
+{% block pagetitle %} Online Test {% endblock %}
+{% block formtitle %} Email will be send to the registered email address {% endblock %}
+{% block content %}
+<form action="" method="post">
+ {% csrf_token %}
+ {{ form }}
+ <button class="btn" type="submit">Request</button>
+ <a class="btn" href="{{URL_ROOT}}/exam/login/">Cancel</a>
+</form>
+{% endblock content %}
diff --git a/yaksh/urls.py b/yaksh/urls.py
index ad0a925..d74e244 100644
--- a/yaksh/urls.py
+++ b/yaksh/urls.py
@@ -1,6 +1,15 @@
from django.conf.urls import patterns, url
-urlpatterns = patterns('yaksh.views',
+urlpatterns = patterns('django.contrib.auth.views',
+ url(r'^forgotpassword/$', 'password_reset', name="password_reset"),
+ url(r'^password_reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
+ 'password_reset_confirm', name='password_reset_confirm'),
+ url(r'^password_reset/mail_sent/$', 'password_reset_done',
+ name='password_reset_done'),
+ url(r'^password_reset/complete/$', 'password_reset_complete',
+ name='password_reset_complete'),
+)
+urlpatterns += patterns('yaksh.views',
url(r'^$', 'index'),
url(r'^login/$', 'user_login'),
url(r'^quizzes/$', 'quizlist_user'),