39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
|
|
"""Модуль аутентификации"""
|
||
|
|
import hashlib
|
||
|
|
import base64
|
||
|
|
from app.database import Database
|
||
|
|
|
||
|
|
|
||
|
|
class Auth:
|
||
|
|
def __init__(self, db: Database):
|
||
|
|
self.db = db
|
||
|
|
|
||
|
|
def set_master_password(self, password):
|
||
|
|
"""Установить мастер-пароль"""
|
||
|
|
password_hash = self._hash_password(password)
|
||
|
|
self.db.set_setting('master_password_hash', password_hash)
|
||
|
|
self.db.set_setting('password_set', '1')
|
||
|
|
|
||
|
|
def check_password(self, password):
|
||
|
|
"""Проверить мастер-пароль"""
|
||
|
|
stored_hash = self.db.get_setting('master_password_hash')
|
||
|
|
if not stored_hash:
|
||
|
|
return True # Пароль не установлен
|
||
|
|
|
||
|
|
return self._hash_password(password) == stored_hash
|
||
|
|
|
||
|
|
def is_password_set(self):
|
||
|
|
"""Проверяет, установлен ли пароль"""
|
||
|
|
return self.db.get_setting('password_set', '0') == '1'
|
||
|
|
|
||
|
|
def ask_password_on_startup(self):
|
||
|
|
"""Спрашивать ли пароль при входе"""
|
||
|
|
return self.db.get_setting('ask_password_on_startup', '1') == '1'
|
||
|
|
|
||
|
|
def set_ask_password_on_startup(self, value):
|
||
|
|
"""Установить, спрашивать ли пароль при входе"""
|
||
|
|
self.db.set_setting('ask_password_on_startup', '1' if value else '0')
|
||
|
|
|
||
|
|
def _hash_password(self, password):
|
||
|
|
"""Хешировать пароль"""
|
||
|
|
return hashlib.sha256(password.encode()).hexdigest()
|