| import json | |
| import hashlib | |
| from pathlib import Path | |
| class Auth: | |
| def __init__(self, hive_home): | |
| self.hive_home = Path(hive_home) | |
| self.users_file = self.hive_home / "users" / "profiles.json" | |
| self.users = self.load_users() | |
| def load_users(self): | |
| if self.users_file.exists(): | |
| return json.loads(self.users_file.read_text()) | |
| return { | |
| "owner": { | |
| "id": "owner", | |
| "pass_hash": self.hash_password("Fehr2008"), | |
| "role": "owner", | |
| "voice_enrolled": False | |
| } | |
| } | |
| def save_users(self): | |
| self.users_file.write_text(json.dumps(self.users, indent=2)) | |
| def hash_password(self, password): | |
| return hashlib.pbkdf2_hmac('sha256', password.encode(), b'salt', 100000).hex() | |
| def check_password(self, username, password): | |
| user = self.users.get(username) | |
| if not user: | |
| return False | |
| return user["pass_hash"] == self.hash_password(password) |