77 lines
1.8 KiB
Python
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
|