Files
swingmusic-extended/swingmusic/utils/auth.py
T
cwilvx 86fabcd5e3 modularize src
+ merge main.py and manage.py
+ move start logic to swingmusic/__main__.py
+ add a run.py on the project root
2025-05-25 20:35:54 +03:00

44 lines
1.0 KiB
Python

import hmac
import hashlib
from flask_jwt_extended import current_user
from swingmusic.config import UserConfig
def hash_password(password: str) -> str:
"""
Hashes the given password using sha256 algorithm and the user id as salt.
:param password: The password to hash.
:return: The hashed password.
"""
return hashlib.pbkdf2_hmac(
"sha256", password.encode("utf-8"), UserConfig().serverId.encode("utf-8"), 100000
).hex()
def check_password(password: str, hashed: str) -> bool:
"""
This function checks if the given password matches the hashed password.
:param password: The password to check.
:param hashed: The hashed password.
:return: Whether the password matches.
"""
return hmac.compare_digest(hash_password(password), hashed)
def get_current_userid() -> int:
"""
Get the current session user.
"""
try:
return current_user["id"]
except RuntimeError:
# Catch this error raised during migration execution
return 1