Merge pull request #27 from WebEngineering2/bcrypt

Updated api to use bcrypt
This commit is contained in:
Florian Kaiser 2022-03-27 20:42:58 +02:00 committed by GitHub
commit be6714371e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 8 deletions

View File

@ -1,7 +1,6 @@
import hashlib
import os import os
import uuid
import bcrypt
import jwt import jwt
from apiflask import abort from apiflask import abort
from flask import request, jsonify from flask import request, jsonify
@ -11,13 +10,11 @@ from models import User
def hash_password(password): def hash_password(password):
salt = uuid.uuid4().hex return bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
def check_password(hashed_password, user_password): def check_password(hashed_password, user_password):
password, salt = hashed_password.split(':') return bcrypt.checkpw(hashed_password.encode("utf-8"), user_password)
return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest()
def get_token(): def get_token():

View File

@ -4,7 +4,7 @@ from db import db
class User(db.Model): class User(db.Model):
__tablename__ = 'users' __tablename__ = 'users'
email = db.Column('email', db.String(255), primary_key=True, nullable=False, unique=True) email = db.Column('email', db.String(255), primary_key=True, nullable=False, unique=True)
password = db.Column('password', db.String(255), nullable=False, server_default='') password = db.Column('password', db.BINARY(60), nullable=False)
username = db.Column('username', db.String(255), nullable=False, server_default='') username = db.Column('username', db.String(255), nullable=False, server_default='')
telegram_user_id = db.Column('telegram_user_id', db.String(255), nullable=True, server_default='') telegram_user_id = db.Column('telegram_user_id', db.String(255), nullable=True, server_default='')
admin = db.Column('admin', db.Boolean(), server_default='0') admin = db.Column('admin', db.Boolean(), server_default='0')

View File

@ -7,3 +7,4 @@ pymysql==1.0.2
pyjwt==2.3.0 pyjwt==2.3.0
apiflask==0.12.0 apiflask==0.12.0
flask-cors==3.0.10 flask-cors==3.0.10
bcrypt==3.1.0