Files
Kur3ab/beta2/universal_git_analyzer_gui_final2/storage.py

66 lines
1.6 KiB
Python

import json
import os
import hashlib
DATA_FILE = os.path.join(os.path.dirname(__file__), 'users.json')
def load_data():
if not os.path.exists(DATA_FILE):
return {}
try:
with open(DATA_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
except Exception:
return {}
def save_data(data):
with open(DATA_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def hash_password(password):
return hashlib.sha256(password.encode('utf-8')).hexdigest()
def register_user(login, password):
data = load_data()
if login in data:
return False, 'Такой пользователь уже существует'
data[login] = {
'password': hash_password(password),
'repositories': []
}
save_data(data)
return True, 'Профиль создан'
def check_user(login, password):
data = load_data()
return login in data and data[login].get('password') == hash_password(password)
def get_repositories(login):
data = load_data()
return data.get(login, {}).get('repositories', [])
def add_repository(login, repo_link):
data = load_data()
if login not in data:
return False
repos = data[login].setdefault('repositories', [])
if repo_link in repos:
return False
repos.append(repo_link)
save_data(data)
return True
def delete_repository(login, repo_link):
data = load_data()
if login in data and repo_link in data[login].get('repositories', []):
data[login]['repositories'].remove(repo_link)
save_data(data)