Mercurial > piecrust2
comparison foodtruck/bcryptfallback.py @ 640:59968ee07a07
admin: Don't require `bcrypt` for running FoodTruck with `chef`.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 14 Feb 2016 22:06:32 -0800 |
parents | |
children | 3885421c29a3 |
comparison
equal
deleted
inserted
replaced
639:91dd760950ad | 640:59968ee07a07 |
---|---|
1 import hashlib | |
2 import logging | |
3 | |
4 | |
5 print_warning = False | |
6 logger = logging.getLogger(__name__) | |
7 | |
8 | |
9 try: | |
10 from bcrypt import hashpw, gensalt | |
11 except ImportError: | |
12 print_warning = True | |
13 | |
14 def hashpw(password, *args, **kwargs): | |
15 return hashlib.sha512(password).hexdigest().encode('utf8') | |
16 | |
17 def gensalt(*args, **kwargs): | |
18 return b'' | |
19 | |
20 | |
21 try: | |
22 from flask.ext.bcrypt import Bcrypt | |
23 except ImportError: | |
24 print_warning = True | |
25 | |
26 def generate_password_hash(password): | |
27 return hashlib.sha512(password.encode('utf8')).hexdigest() | |
28 | |
29 def check_password_hash(reference, check): | |
30 check_hash = hashlib.sha512(check.encode('utf8')).hexdigest() | |
31 return check_hash == reference | |
32 | |
33 class SHA512Fallback(object): | |
34 is_fallback_bcrypt = True | |
35 | |
36 def __init__(self, app=None): | |
37 self.generate_password_hash = generate_password_hash | |
38 self.check_password_hash = check_password_hash | |
39 | |
40 Bcrypt = SHA512Fallback | |
41 | |
42 | |
43 if print_warning: | |
44 logging.warning("Bcrypt not available... falling back to SHA512.") | |
45 logging.warning("Run `pip install Flask-Bcrypt` for more secure " | |
46 "password hashing.") | |
47 |