Spaces:
Running
Running
import json | |
import os | |
from passlib.context import CryptContext | |
# Tạo thư mục data nếu chưa tồn tại | |
os.makedirs("data", exist_ok=True) | |
USERS_FILE = "data/users.json" | |
# Context để hash password | |
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") | |
# Hàm để đọc users từ file JSON | |
def get_users(): | |
if not os.path.exists(USERS_FILE): | |
# Tạo file với dữ liệu mặc định nếu chưa tồn tại | |
default_users = { | |
"chien_vm": { | |
"username": "chien_vm", | |
"full_name": "Chien VM", | |
"email": "[email protected]", | |
"hashed_password": "$2b$12$RtcKFk7B3hKd7vYkwxdFN.eBXSiryQIRUG.OoJ07Pl9lzHNUkugMi", | |
"disabled": False, | |
}, | |
"hoi_nv": { | |
"username": "hoi_nv", | |
"full_name": "Hoi NV", | |
"email": "[email protected]", | |
"hashed_password": "$2b$12$RtcKFk7B3hKd7vYkwxdFN.eBXSiryQIRUG.OoJ07Pl9lzHNUkugMi", | |
"disabled": False, | |
}, | |
} | |
save_users(default_users) | |
return default_users | |
with open(USERS_FILE, "r", encoding="utf-8") as f: | |
return json.load(f) | |
# Hàm để lưu users vào file JSON | |
def save_users(users_data): | |
with open(USERS_FILE, "w", encoding="utf-8") as f: | |
json.dump(users_data, f, indent=4, ensure_ascii=False) | |
# Hàm để tạo tài khoản mới | |
def create_account(username, password): | |
# Kiểm tra xem username đã tồn tại chưa | |
users = get_users() | |
if username in users: | |
return False, "Username already exists" | |
# Hash password | |
hashed_password = pwd_context.hash(password) | |
# Tạo user mới | |
new_user = { | |
"username": username, | |
"full_name": username, # Mặc định full_name là username | |
"email": "", # Không yêu cầu email | |
"hashed_password": hashed_password, | |
"disabled": False, | |
} | |
# Thêm user mới vào database | |
users[username] = new_user | |
save_users(users) | |
return True, "Account created successfully" | |
# Để tương thích với code cũ | |
users_db = get_users() | |