39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import sys
|
|
|
|
from database import SessionLocal
|
|
from models import User
|
|
from services import AuthService
|
|
from os import getenv
|
|
|
|
def create_admin():
|
|
email = getenv("ADMIN_EMAIL")
|
|
password = getenv("ADMIN_PASSWORD")
|
|
|
|
if not email or not password:
|
|
raise RuntimeError("ADMIN_EMAIL y ADMIN_PASSWORD is required.")
|
|
if len(password) < 8:
|
|
raise RuntimeError("ADMIN_PASSWORD need almost 8 caracters.")
|
|
|
|
db = SessionLocal()
|
|
try:
|
|
existing = db.query(User).filter(User.email == email).first()
|
|
if existing:
|
|
print(f"[INFO] Admin '{email}' already exists, skipping creation.")
|
|
return
|
|
admin = User(
|
|
name='Admin',
|
|
email=email,
|
|
password=AuthService.hash_password(password),
|
|
rol='admin',
|
|
active=True
|
|
)
|
|
db.add(admin)
|
|
db.commit()
|
|
print(f"[INFO] Admin '{email}' created successfully.")
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(f"[ERROR] Failed to create admin: {e}", file=sys.stderr)
|
|
raise
|
|
finally:
|
|
db.close()
|