Очистка полученных сетеевых данных. Узлы. Точки доступа. Всё сразу.

This commit is contained in:
parent 37f9e3abfb
commit f4aae4f3c4
6 changed files with 151 additions and 41 deletions

View file

@ -75,32 +75,21 @@ class AuthService:
db_user = self.storage.get_user_by_username(user.username)
if not db_user:
logger.error(f"Пользователь {user.username} не найден")
raise HTTPException(status_code=401,
detail="Неверный логин или пароль")
if not self.storage.verify_password(user.password,
db_user["password_hash"]):
raise HTTPException(status_code=401, detail="Неверный логин или пароль")
if not self.storage.verify_password(user.password, db_user["password_hash"]):
logger.error(
f"Неверный пароль для пользователя {user.username}")
raise HTTPException(status_code=401,
detail="Неверный логин или пароль")
raise HTTPException(status_code=401, detail="Неверный логин или пароль")
access_token = self.create_access_token(
data={"sub": user.username})
session_id = self.session_storage.create_session(
user.username, access_token, client_id)
logger.info(f"Пользователь {user.username} успешно авторизован")
return {
"access_token":
access_token,
"token_type":
"bearer",
"session_id":
session_id,
"user":
UserResponse(
id=db_user["id"],
username=db_user["username"],
is_admin=db_user["is_admin"],
),
"access_token": access_token,
"token_type": "bearer",
"session_id": session_id,
"user": UserResponse(id=db_user["id"], username=db_user["username"], is_admin=db_user["is_admin"]),
}
except Exception as e:
logger.error(
@ -119,11 +108,8 @@ class AuthService:
db_user = self.storage.get_user_by_username(username)
if not db_user:
logger.error(f"Пользователь {username} не найден")
raise HTTPException(status_code=401,
detail="Пользователь не найден")
return UserResponse(id=db_user["id"],
username=db_user["username"],
is_admin=db_user["is_admin"])
raise HTTPException(status_code=401, detail="Пользователь не найден")
return UserResponse(id=db_user["id"], username=db_user["username"], is_admin=db_user["is_admin"])
def get_user_by_session(self, client_id: str) -> dict:
"""Получает пользователя и токен по client_id"""
@ -131,24 +117,17 @@ class AuthService:
if not session:
logger.error(
f"Сессия для client_id {client_id} не найдена или истекла")
raise HTTPException(status_code=401,
detail="Сессия недействительна")
raise HTTPException(status_code=401, detail="Сессия недействительна")
username = session["username"]
token = session["token"]
db_user = self.storage.get_user_by_username(username)
if not db_user:
logger.error(f"Пользователь {username} не найден")
raise HTTPException(status_code=401,
detail="Пользователь не найден")
raise HTTPException(status_code=401, detail="Пользователь не найден")
return {
"user":
UserResponse(
id=db_user["id"],
username=db_user["username"],
is_admin=db_user["is_admin"],
),
"access_token":
token,
UserResponse(id=db_user["id"], username=db_user["username"], is_admin=db_user["is_admin"]),
"access_token": token
}
def logout(self, client_id: str):
@ -164,5 +143,4 @@ class AuthService:
except Exception as e:
logger.error(
f"Ошибка при выходе из системы: {type(e).__name__} - {str(e)}")
raise HTTPException(status_code=500,
detail="Ошибка при выходе из системы")
raise HTTPException(status_code=500, detail="Ошибка при выходе из системы")

View file

@ -0,0 +1,68 @@
import json
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class SettingsService:
"""Сервис для управления настройками и очистки данных сети."""
def __init__(self):
self.subnet_file = "storage/devices/devices.json"
self.wifi_file = "storage/wifi/wifi.json"
def clear_subnet(self) -> bool:
"""Очищает данные узлов подсети в файле devices.json.
Returns:
bool: True, если очистка успешна.
Raises:
Exception: Если произошла ошибка при записи в файл.
"""
try:
with open(self.subnet_file, "w") as f:
json.dump([], f)
logger.info("Данные узлов подсети успешно очищены")
return True
except Exception as e:
logger.error(f"Ошибка очистки узлов подсети: {str(e)}")
raise
def clear_wifi(self) -> bool:
"""Очищает данные точек доступа Wi-Fi в файле wifi.json.
Returns:
bool: True, если очистка успешна.
Raises:
Exception: Если произошла ошибка при записи в файл.
"""
try:
with open(self.wifi_file, "w") as f:
json.dump([], f)
logger.info("Данные точек доступа Wi-Fi успешно очищены")
return True
except Exception as e:
logger.error(f"Ошибка очистки точек доступа Wi-Fi: {str(e)}")
raise
def clear_all_data(self) -> bool:
"""Очищает данные узлов подсети и точек доступа Wi-Fi в обоих файлах.
Returns:
bool: True, если очистка успешна.
Raises:
Exception: Если произошла ошибка при записи в один из файлов.
"""
try:
with open(self.subnet_file, "w") as f:
json.dump([], f)
with open(self.wifi_file, "w") as f:
json.dump([], f)
logger.info("Все сетевые данные успешно очищены")
return True
except Exception as e:
logger.error(f"Ошибка очистки всех сетевых данных: {str(e)}")
raise

View file

@ -230,12 +230,12 @@ class DeviceStorage:
Хранит устройства в JSON-файле и удаляет устаревшие записи.
"""
def __init__(self, storage_path: str = "etc/gonets/SRV/storage/devices/devices.json"):
def __init__(self, storage_path: str = "storage/devices/devices.json"):
"""Инициализирует хранилище устройств с указанным путём.
Args:
storage_path (str, optional): Путь к файлу хранения.
По умолчанию "etc/gonets/SRV/storage/devices/devices.json".
По умолчанию "storage/devices/devices.json".
Создаёт родительские директории, если они не существуют.
"""

View file

@ -22,12 +22,12 @@ class WifiStorage:
в JSON-файле на диске.
"""
def __init__(self, storage_path: str = "etc/gonets/SRV/storage/wifi/wifi.json"):
def __init__(self, storage_path: str = "storage/wifi/wifi.json"):
"""Инициализирует объект хранилища Wi-Fi с указанным путём к файлу.
Args:
storage_path (str, optional): Путь к файлу для хранения заметок.
По умолчанию "etc/gonets/SRV/storage/wifi/wifi.json".
По умолчанию "storage/wifi/wifi.json".
Создаёт родительские директории, если они не существуют.
"""