36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
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)
|