From 6462315eb262f3501f3f5d0b25b6d1283e5142d5 Mon Sep 17 00:00:00 2001 From: farhaanbukhsh Date: Jan 19 2016 15:21:01 +0000 Subject: [PATCH 1/79] Add a change password link for local auth --- diff --git a/pagure/login_forms.py b/pagure/login_forms.py index 0518fd0..3755310 100644 --- a/pagure/login_forms.py +++ b/pagure/login_forms.py @@ -86,3 +86,18 @@ class NewUserForm(wtf.Form): 'Confirm password *', [wtforms.validators.Required(), same_password] ) + +class ChangePasswordForm(wtf.Form): + """ Form to reset one's password in the local database. """ + old_password = wtforms.PasswordField( + 'Old Password *', + [wtforms.validators.Required()] + ) + password = wtforms.PasswordField( + 'Password *', + [wtforms.validators.Required()] + ) + confirm_password = wtforms.PasswordField( + 'Confirm password *', + [wtforms.validators.Required(), same_password] + ) diff --git a/pagure/templates/login/password_change.html b/pagure/templates/login/password_change.html index bef3946..26a5836 100644 --- a/pagure/templates/login/password_change.html +++ b/pagure/templates/login/password_change.html @@ -1,6 +1,7 @@ {% extends "master.html" %} {% from "_formhelper.html" import render_bootstrap_field %} +<<<<<<< HEAD {% block title %}Lost password{% endblock %} {% set tag = "home" %} @@ -25,5 +26,27 @@ +======= +{% block title %}Change password{% endblock %} +{%block tag %}home{% endblock %} + +{% block content %} +

Change password

+ +
+ + {{ render_field_in_row(form.old_password) }} + {{ render_field_in_row(form.password) }} + {{ render_field_in_row(form.confirm_password) }} +
+

+ + + + + {{ form.csrf_token }} +

+
+>>>>>>> Add a change password link for local auth {% endblock %} diff --git a/pagure/templates/user_settings.html b/pagure/templates/user_settings.html index 69db47d..bcd9528 100644 --- a/pagure/templates/user_settings.html +++ b/pagure/templates/user_settings.html @@ -38,6 +38,7 @@ {% block content %} +<<<<<<< HEAD
@@ -64,6 +65,26 @@
+======= +
diff --git a/pagure/ui/login.py b/pagure/ui/login.py index ede0308..d32b340 100644 --- a/pagure/ui/login.py +++ b/pagure/ui/login.py @@ -12,6 +12,7 @@ import hashlib import datetime import urlparse +import bcrypt import flask from sqlalchemy.exc import SQLAlchemyError @@ -44,9 +45,8 @@ def new_user(): flask.flash('Email address already taken.', 'error') return flask.redirect(flask.request.url) - password = '%s%s' % ( - form.password.data, APP.config.get('PASSWORD_SEED', None)) - form.password.data = hashlib.sha512(password).hexdigest() + password = bcrypt.hashpw(form.password.data, bcrypt.gensalt()) + form.password.data = password token = pagure.lib.login.id_generator(40) @@ -98,12 +98,12 @@ def do_login(): if form.validate_on_submit(): username = form.username.data - password = '%s%s' % ( - form.password.data, APP.config.get('PASSWORD_SEED', None)) - password = hashlib.sha512(password).hexdigest() user_obj = pagure.lib.search_user(SESSION, username=username) + password = bcrypt.hashpw(form.password.data, user_obj.password) + if not user_obj or user_obj.password != password: + print user_obj.password, password flask.flash('Username or password invalid.', 'error') return flask.redirect(flask.url_for('auth_login')) elif user_obj.token: @@ -232,9 +232,7 @@ def reset_password(token): if form.validate_on_submit(): - password = '%s%s' % ( - form.password.data, APP.config.get('PASSWORD_SEED', None)) - user_obj.password = hashlib.sha512(password).hexdigest() + user_obj.password = bcrypt.hashpw(form.password.data, bcrypt.gensalt()) user_obj.token = None SESSION.add(user_obj) @@ -273,12 +271,9 @@ def change_password(username): flask.flash('No user associated with this username.', 'error') return flask.redirect(flask.url_for('auth_login')) if form.validate_on_submit(): - old_password = '%s%s' % ( - form.old_password.data, APP.config.get('PASSWORD_SEED', None)) - if user_obj.password == hashlib.sha512(old_password).hexdigest(): - password = '%s%s' % ( - form.password.data, APP.config.get('PASSWORD_SEED', None)) - user_obj.password = hashlib.sha512(password).hexdigest() + old_password = bcrypt.hashpw(form.old_password.data, user_obj.password) + if user_obj.password == old_password: + user_obj.password = bcrypt.hashpw(form.password.data, bcrypt.gensalt()) SESSION.add(user_obj) try: @@ -295,7 +290,7 @@ def change_password(username): return flask.redirect(flask.url_for('auth_login')) return flask.render_template( - 'login/password_change.html', + 'login/password_recover.html', form=form, username=username, ) From 4886b40c184c4ead64ff76e65a980e6d7d0e4e54 Mon Sep 17 00:00:00 2001 From: farhaanbukhsh Date: Jan 19 2016 15:21:01 +0000 Subject: [PATCH 3/79] Add requirement and ensuring backward compatibility --- diff --git a/pagure/templates/login/password_recover.html b/pagure/templates/login/password_recover.html index 57d9f92..a61a452 100644 --- a/pagure/templates/login/password_recover.html +++ b/pagure/templates/login/password_recover.html @@ -1,25 +1,34 @@ {% extends "master.html" %} -{% from "_formhelper.html" import render_field_in_row %} +{% from "_formhelper.html" import render_bootstrap_field %} {% block title %}Change password{% endblock %} {%block tag %}home{% endblock %} {% block content %} -

Change password

- -
- - {{ render_field_in_row(form.old_password) }} - {{ render_field_in_row(form.password) }} - {{ render_field_in_row(form.confirm_password) }} -
-

- - - - - {{ form.csrf_token }} -

-
+
+
+
+
+
+ Change password +
+
+ + {{ render_bootstrap_field(form.old_password) }} + {{ render_bootstrap_field(form.password) }} + {{ render_bootstrap_field(form.confirm_password) }} +
+

+ + + + + {{ form.csrf_token }} +

+
+
+
+
+
{% endblock %} diff --git a/pagure/templates/user_settings.html b/pagure/templates/user_settings.html index bcd9528..0ff9e40 100644 --- a/pagure/templates/user_settings.html +++ b/pagure/templates/user_settings.html @@ -38,7 +38,6 @@ {% block content %} -<<<<<<< HEAD
@@ -65,26 +64,6 @@
-======= -