import db from hashlib import sha256 # Check if access token can update domain's ip def check_token_domain(db_path: str, token: str, domain: str) -> bool: userid = db.Token.get_user(db_path, token) domain = domain.strip() return domain in db.User.get_domains(db_path, userid) # Verify user's passowrd for login. Return UserID on success, None on failure def user_login(db_path: str, username: str, password: str) -> int | None: try: userid = db.User.get_id(db_path, username) except ValueError: return None pwsalt, pwhash = db.User.get_password_hash(db_path, userid) password_hash = sha256( (pwsalt + password).encode('utf-8')).hexdigest() if pwhash == password_hash: return userid return None # Change password of user (by user) def change_user_password(db_path: str, userid: int, oldpass: str, newpass: str) -> None: username = db.User.get_username(db_path, userid) if user_login(db_path, username, oldpass) is None: raise ValueError("Incorrect password") db.User.set_password(db_path, userid, newpass)