66 lines
1.6 KiB
Python
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)
|