import hashlib import os import uuid import jwt from flask import request from db import db from models import User def hash_password(password): salt = uuid.uuid4().hex return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt def check_password(hashed_password, user_password): password, salt = hashed_password.split(':') return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest() def get_token(): token = None if 'Authorization' in request.headers: token = request.headers['Authorization'].split(" ")[1] return token def extract_token_data(token): if token is not None: try: return jwt.decode(token, os.getenv('SECRET_KEY'), algorithms=["HS256"]) except: return None def get_username_from_token_data(token_data): return token_data['username'] def get_user_id_from_username(username): return db.session.query(User).filter_by(username=username).first().user_id