Добавлена бета версия
This commit is contained in:
76
storage.py
Normal file
76
storage.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import json
|
||||
import os
|
||||
import hashlib
|
||||
|
||||
APP_DIR = os.path.join(os.path.expanduser("~"), "GiteaAnalyzer")
|
||||
DB_FILE = os.path.join(APP_DIR, "users.json")
|
||||
|
||||
|
||||
def _ensure_app_dir():
|
||||
os.makedirs(APP_DIR, exist_ok=True)
|
||||
|
||||
|
||||
def load_users():
|
||||
_ensure_app_dir()
|
||||
if not os.path.exists(DB_FILE):
|
||||
return {}
|
||||
try:
|
||||
with open(DB_FILE, "r", encoding="utf-8") as file:
|
||||
return json.load(file)
|
||||
except Exception:
|
||||
return {}
|
||||
|
||||
|
||||
def save_users(users):
|
||||
_ensure_app_dir()
|
||||
with open(DB_FILE, "w", encoding="utf-8") as file:
|
||||
json.dump(users, file, ensure_ascii=False, indent=4)
|
||||
|
||||
|
||||
def hash_password(password):
|
||||
return hashlib.sha256(password.encode("utf-8")).hexdigest()
|
||||
|
||||
|
||||
def register_user(login, password):
|
||||
users = load_users()
|
||||
if login in users:
|
||||
return False, "Такой пользователь уже существует"
|
||||
users[login] = {
|
||||
"password": hash_password(password),
|
||||
"repositories": []
|
||||
}
|
||||
save_users(users)
|
||||
return True, "Профиль создан"
|
||||
|
||||
|
||||
def check_user(login, password):
|
||||
users = load_users()
|
||||
user = users.get(login)
|
||||
if not user:
|
||||
return False
|
||||
return user.get("password") == hash_password(password)
|
||||
|
||||
|
||||
def get_repositories(login):
|
||||
users = load_users()
|
||||
return users.get(login, {}).get("repositories", [])
|
||||
|
||||
|
||||
def add_repository(login, repo_link):
|
||||
users = load_users()
|
||||
repos = users[login].setdefault("repositories", [])
|
||||
if repo_link not in repos:
|
||||
repos.append(repo_link)
|
||||
save_users(users)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def delete_repository(login, repo_link):
|
||||
users = load_users()
|
||||
repos = users[login].setdefault("repositories", [])
|
||||
if repo_link in repos:
|
||||
repos.remove(repo_link)
|
||||
save_users(users)
|
||||
return True
|
||||
return False
|
||||
Reference in New Issue
Block a user