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 = "admin@nutribot.com" | |
| 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() |