Updated api to use bcrypt

This commit is contained in:
Administrator 2022-03-27 20:42:11 +02:00
parent 948ef0c179
commit 48e97ea406
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

@ -6,4 +6,5 @@ python-dotenv==0.20.0
pymysql==1.0.2 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