Files

77 lines
1.8 KiB
Python

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