from tinydb import TinyDB, where, Query import uuid import hasher db = TinyDB("./database.json", indent=4) query = Query() users = db.table("users"); def get_users(): return (users.all()) def get_user_by_email(email: str): user_lst = users.search(query.email == email) if (user_lst == []): return (None) return (user_lst[0]) def email_exist(email: str) -> bool: return (get_user_by_email(email) != None) def user_exist(email: str): return (get_user_by_email(email) != None) def add_user(email: str, password: str): password_hashed = hasher.hash_text(password) users.insert({"email": email, "password": str(password_hashed), "id": uuid.uuid4()}); def check_password(email: str, password: str): password_hashed = get_user_by_email(email).get("password") password_hashed = bytes(password_hashed[2:-1], "utf-8") return (hasher.is_same(password, password_hashed)) def change_user_password(email: str, password: str): password_hashed = hasher.hash_text(password) db.update({"password": password_hashed}, query.email == email) resets = db.table("resets") def get_email_by_reset_code(code: str): user_lst = resets.search(query.code == code) if (user_lst == []): return (None) return (user_lst[0]) def reset_code_exist(code: str) -> bool: return (get_email_by_reset_code(code) != None) def remove_reset_code_by_email(email: str): resets.remove(query.email == email) def remove_reset_code_by_code(code: str): resets.remove(query.code == code) def create_reset_code_by_email(email: str): code = str(uuid.uuid4()); remove_reset_code_by_email(email); resets.insert({"email": email, "code": code}) return (code)