forked from andika/membership-be
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""
|
|
Create an admin user for testing.
|
|
Run this script to add an admin account to your database.
|
|
"""
|
|
|
|
from database import SessionLocal
|
|
from models import User, UserStatus, UserRole
|
|
from auth import get_password_hash
|
|
from datetime import datetime, timezone
|
|
|
|
def create_admin():
|
|
"""Create an admin user"""
|
|
db = SessionLocal()
|
|
|
|
try:
|
|
# Check if admin already exists
|
|
existing_admin = db.query(User).filter(
|
|
User.email == "admin@loaf.org"
|
|
).first()
|
|
|
|
if existing_admin:
|
|
print(f"⚠️ Admin user already exists: {existing_admin.email}")
|
|
print(f" Role: {existing_admin.role.value}")
|
|
print(f" Status: {existing_admin.status.value}")
|
|
|
|
# Update to admin role if not already
|
|
if existing_admin.role != UserRole.admin:
|
|
existing_admin.role = UserRole.admin
|
|
existing_admin.status = UserStatus.active
|
|
existing_admin.email_verified = True
|
|
db.commit()
|
|
print("✅ Updated existing user to admin role")
|
|
return
|
|
|
|
print("Creating admin user...")
|
|
|
|
# Create admin user
|
|
admin_user = User(
|
|
email="admin@loaf.org",
|
|
password_hash=get_password_hash("admin123"), # Change this password!
|
|
first_name="Admin",
|
|
last_name="User",
|
|
phone="555-0001",
|
|
address="123 Admin Street",
|
|
city="Admin City",
|
|
state="CA",
|
|
zipcode="90001",
|
|
date_of_birth=datetime(1990, 1, 1),
|
|
status=UserStatus.active,
|
|
role=UserRole.admin,
|
|
email_verified=True,
|
|
newsletter_subscribed=False
|
|
)
|
|
|
|
db.add(admin_user)
|
|
db.commit()
|
|
db.refresh(admin_user)
|
|
|
|
print("✅ Admin user created successfully!")
|
|
print(f" Email: admin@loaf.org")
|
|
print(f" Password: admin123")
|
|
print(f" Role: {admin_user.role.value}")
|
|
print(f" User ID: {admin_user.id}")
|
|
print("\n⚠️ IMPORTANT: Change the password after first login!")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error creating admin user: {e}")
|
|
db.rollback()
|
|
finally:
|
|
db.close()
|
|
|
|
if __name__ == "__main__":
|
|
create_admin()
|