Spaces:
Sleeping
Sleeping
File size: 3,607 Bytes
8275526 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
#!/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() |