Add alpha and beta versions
This commit is contained in:
65
beta2/universal_git_analyzer_gui_final2/storage.py
Normal file
65
beta2/universal_git_analyzer_gui_final2/storage.py
Normal file
@@ -0,0 +1,65 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user