Mercurial > wikked
changeset 114:ef683c12f981
Fallback to SHA512 if Bcrypt is not available.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 18 Nov 2013 12:35:41 -0800 |
parents | 74eb145eb839 |
children | 1aee72ba7028 |
files | requirements.txt wikked/views.py wikked/web.py |
diffstat | 3 files changed, 19 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/requirements.txt Sat Nov 16 08:36:02 2013 -0800 +++ b/requirements.txt Mon Nov 18 12:35:41 2013 -0800 @@ -1,29 +1,19 @@ -Creoleparser==0.7.4 Flask==0.10.1 -Flask-Bcrypt==0.5.2 Flask-Login==0.1.3 Flask-SQLAlchemy==1.0 Flask-Script==0.5.1 Flask-Testing==0.4 -Flask-WTF==0.8 -Genshi==0.6 Jinja2==2.6 Markdown==2.2.1 -PyMeta==0.5.0 PyYAML==3.10 Pygments==1.5 SQLAlchemy==0.8.1 -WTForms==1.0.2 Werkzeug==0.8.3 Whoosh==2.4.1 argparse==1.2.1 itsdangerous==0.22 nose==1.2.1 -py-bcrypt==0.2 pybars==0.0.4 -pystache==0.5.3 -python-creole==1.0.6 -python-hglib==unknown -textile==2.1.5 +python-hglib==1.0 twill==0.9 wsgiref==0.1.2
--- a/wikked/views.py Sat Nov 16 08:36:02 2013 -0800 +++ b/wikked/views.py Mon Nov 18 12:35:41 2013 -0800 @@ -471,7 +471,7 @@ remember = request.form.get('remember') user = g.wiki.auth.getUser(username) - if user is not None: + if user is not None and app.bcrypt: if app.bcrypt.check_password_hash(user.password, password): login_user(user, remember=bool(remember)) result = {'username': username, 'logged_in': 1}
--- a/wikked/web.py Sat Nov 16 08:36:02 2013 -0800 +++ b/wikked/web.py Mon Nov 18 12:35:41 2013 -0800 @@ -72,8 +72,23 @@ # Bcrypt extension. -from flaskext.bcrypt import Bcrypt -app.bcrypt = Bcrypt(app) +try: + from flaskext.bcrypt import Bcrypt + app.bcrypt = Bcrypt(app) +except ImportError: + app.logger.warning("Bcrypt not available... falling back to SHA512.") + + import hashlib + + class SHA512Fallback(object): + def check_password_hash(self, reference, check): + check_hash = hashlib.sha512(check).hexdigest() + return check_hash == reference + + def generate_password_hash(self, password): + return hashlib.sha512(password).hexdigest() + + app.bcrypt = SHA512Fallback() # Create the wiki.