def test_base64encode(): """The base64encode wrapper works properly""" if six.PY2: assert base64encode('abc123') == 'YWJjMTIz' assert base64encode(unicode('abc123')) == 'YWJjMTIz' assert base64encode(unicode('"*****@*****.**".DGxeoA.lCssU3M2QuBfohO-FtdgDQLKbU4'), urlencode=True) == 'InRlc3RAbWFpbGluYXRvci5jb20iLkRHeGVvQS5sQ3NzVTNNMlF1QmZvaE8tRnRkZ0RRTEtiVTQ%3D' assert base64encode('😆') == '8J-Yhg==' assert base64encode('😆', urlencode=True) == '8J-Yhg%3D%3D' else: assert base64encode('abc123') == 'YWJjMTIz' assert base64encode('abc123') == 'YWJjMTIz' assert base64encode('"*****@*****.**".DGxeoA.lCssU3M2QuBfohO-FtdgDQLKbU4', urlencode=True) == 'InRlc3RAbWFpbGluYXRvci5jb20iLkRHeGVvQS5sQ3NzVTNNMlF1QmZvaE8tRnRkZ0RRTEtiVTQ%3D' assert base64encode('😆') == '8J-Yhg==' assert base64encode('😆', urlencode=True) == '8J-Yhg%3D%3D'
def test_base64encode(): """The base64encode wrapper works properly""" if six.PY2: assert base64encode('abc123') == 'YWJjMTIz' assert base64encode(unicode('abc123')) == 'YWJjMTIz' assert base64encode(unicode('"*****@*****.**".DGxeoA.lCssU3M2QuBfohO-FtdgDQLKbU4')) == 'InRlc3RAbWFpbGluYXRvci5jb20iLkRHeGVvQS5sQ3NzVTNNMlF1QmZvaE8tRnRkZ0RRTEtiVTQ' assert base64encode('*****@*****.**') == 'dXNlcit1c2VyQGN0ZmQuaW8' assert base64encode('😆') == '8J-Yhg' else: assert base64encode('abc123') == 'YWJjMTIz' assert base64encode('"*****@*****.**".DGxeoA.lCssU3M2QuBfohO-FtdgDQLKbU4') == 'InRlc3RAbWFpbGluYXRvci5jb20iLkRHeGVvQS5sQ3NzVTNNMlF1QmZvaE8tRnRkZ0RRTEtiVTQ' assert base64encode('*****@*****.**') == 'dXNlcit1c2VyQGN0ZmQuaW8' assert base64encode('😆') == '8J-Yhg'
def reset_password(data=None): logger = logging.getLogger('logins') if data is not None and request.method == "GET": return render_template('reset_password.html', mode='set') if data is not None and request.method == "POST": try: s = TimedSerializer(app.config['SECRET_KEY']) name = s.loads(utils.base64decode(data, urldecode=True), max_age=1800) except BadTimeSignature: return render_template('reset_password.html', errors=['Your link has expired']) except: return render_template( 'reset_password.html', errors=['Your link appears broken, please try again.']) team = Teams.query.filter_by(name=name).first_or_404() team.password = bcrypt_sha256.encrypt(request.form['password'].strip()) db.session.commit() logger.warn( "[{date}] {ip} - successful password reset for {username}".format( date=time.strftime("%m/%d/%Y %X"), ip=utils.get_ip(), username=team.name.encode('utf-8'))) db.session.close() return redirect(url_for('auth.login')) if request.method == 'POST': email = request.form['email'].strip() team = Teams.query.filter_by(email=email).first() if not team: return render_template( 'reset_password.html', errors=[ 'If that account exists you will receive an email, please check your inbox' ]) s = TimedSerializer(app.config['SECRET_KEY']) token = s.dumps(team.name) text = """ Did you initiate a password reset? {0}/{1} """.format(url_for('auth.reset_password', _external=True), utils.base64encode(token, urlencode=True)) utils.sendmail(email, text) return render_template( 'reset_password.html', errors=[ 'If that account exists you will receive an email, please check your inbox' ]) return render_template('reset_password.html')