Spaces:
Sleeping
Sleeping
#!/usr/bin/env python3 | |
""" | |
Script khởi tạo admin mặc định cho hệ thống Nutribot | |
Chạy script này để tạo tài khoản admin đầu tiên | |
""" | |
import os | |
import sys | |
import logging | |
# Thêm thư mục cha vào sys.path | |
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
from models.user_model import User | |
# Cấu hình logging | |
logging.basicConfig( | |
level=logging.INFO, | |
format='%(asctime)s - %(levelname)s - %(message)s' | |
) | |
logger = logging.getLogger(__name__) | |
def create_default_admin(): | |
"""Tạo admin mặc định""" | |
try: | |
print("=" * 50) | |
print("KHỞI TẠO ADMIN NUTRIBOT") | |
print("=" * 50) | |
# Kiểm tra xem đã có admin chưa | |
from models.user_model import get_db | |
db = get_db() | |
existing_admin = db.users.find_one({"role": "admin"}) | |
if existing_admin: | |
print("❌ Đã có admin trong hệ thống!") | |
print(f"Admin hiện tại: {existing_admin.get('name')} ({existing_admin.get('email')})") | |
choice = input("\nBạn có muốn tạo admin mới không? (y/N): ").lower().strip() | |
if choice != 'y': | |
print("Hủy bỏ tạo admin.") | |
return | |
# Nhập thông tin admin | |
print("\nNhập thông tin cho admin mới:") | |
name = input("Họ tên: ").strip() | |
if not name: | |
name = "Administrator" | |
print(f"Sử dụng tên mặc định: {name}") | |
email = input("Email: ").strip() | |
if not email: | |
email = "[email protected]" | |
print(f"Sử dụng email mặc định: {email}") | |
# Kiểm tra email đã tồn tại | |
if User.find_by_email(email): | |
print(f"❌ Email {email} đã được sử dụng!") | |
return | |
password = input("Mật khẩu (tối thiểu 6 ký tự): ").strip() | |
if not password or len(password) < 6: | |
password = "Admin123!" | |
print(f"Sử dụng mật khẩu mặc định: {password}") | |
gender = input("Giới tính (male/female/other, có thể bỏ trống): ").strip() | |
if gender and gender not in ['male', 'female', 'other']: | |
gender = None | |
# Tạo admin | |
print("\nĐang tạo admin...") | |
success, result = User.create_admin(name, email, password, gender) | |
if success: | |
print("✅ Tạo admin thành công!") | |
print("\n" + "=" * 50) | |
print("THÔNG TIN ĐĂNG NHẬP ADMIN") | |
print("=" * 50) | |
print(f"Email: {email}") | |
print(f"Mật khẩu: {password}") | |
print(f"Tên: {name}") | |
print(f"ID: {result['user_id']}") | |
print("=" * 50) | |
print("\n⚠️ LƯU Ý:") | |
print("- Hãy ghi nhớ thông tin đăng nhập này") | |
print("- Nên đổi mật khẩu sau lần đăng nhập đầu tiên") | |
print("- Truy cập admin panel tại: http://localhost:5173/admin") | |
print() | |
else: | |
print(f"❌ Lỗi tạo admin: {result}") | |
except Exception as e: | |
logger.error(f"Lỗi tạo admin: {e}") | |
print(f"❌ Có lỗi xảy ra: {e}") | |
def main(): | |
"""Hàm main""" | |
try: | |
create_default_admin() | |
except KeyboardInterrupt: | |
print("\n\nĐã hủy bỏ tạo admin.") | |
except Exception as e: | |
print(f"\nLỗi: {e}") | |
if __name__ == "__main__": | |
main() |