#!/bin/bash set -e echo "Starting PDF TEI Editor application..." # Set default port if not provided PORT=${PORT:-8000} # Change to app directory cd /app if ! .venv/bin/python bin/manage.py user list | grep -q lfoppiano && [ -n "$LFOPPIANO_PASSWORD" ]; then echo "User lfoppiano not found, adding it..." .venv/bin/python bin/manage.py user add lfoppiano --password $LFOPPIANO_PASSWORD --fullname "Luca" --email "luca@sciencialab.com" .venv/bin/python bin/manage.py user add-role lfoppiano admin fi .venv/bin/python bin/manage.py user add-role lfoppiano reviewer if ! .venv/bin/python bin/manage.py user list | grep -q kazuyo && [ -n "$KAZUYO_PASSWORD" ]; then echo "User kazuyo not found, adding it..." .venv/bin/python bin/manage.py user add kazuyo --password $KAZUYO_PASSWORD --fullname "Kazuyo" --email "kazuyo@sciencialab.com" .venv/bin/python bin/manage.py user set kazuyo fullname Kazuyo .venv/bin/python bin/manage.py user set kazuyo email "kazuyo@sciencialab.com" .venv/bin/python bin/manage.py user add-role kazuyo annotator fi # Create default accounts if no environment variables are set if [ -z "$APP_ADMIN_PASSWORD" ] && [ -z "$APP_DEMO_PASSWORD" ]; then echo "No custom passwords provided, setting up default demo accounts..." # Set default login message with security warning export APP_LOGIN_MESSAGE="

⚠️ Demo Installation

Default accounts: admin/admin and demo/demo. For testing purposes only. Configure real passwords in production!

" # Use Python to properly escape the message for JSON ESCAPED_DEFAULT_MESSAGE=$(.venv/bin/python -c "import json, os; print(json.dumps(os.environ.get('APP_LOGIN_MESSAGE', '')))") .venv/bin/python bin/manage.py config set application.login-message "$ESCAPED_DEFAULT_MESSAGE" 2>/dev/null || echo "Warning: Failed to set default login message" # Create default admin and demo user export APP_ADMIN_PASSWORD="admin" export APP_DEMO_PASSWORD="demo" fi # Set login message if APP_LOGIN_MESSAGE is provided if [ -n "$APP_LOGIN_MESSAGE" ]; then echo "Setting login message from environment variable..." # Use Python to properly escape the message for JSON ESCAPED_MESSAGE=$(.venv/bin/python -c "import json, os; print(json.dumps(os.environ.get('APP_LOGIN_MESSAGE', '')))") .venv/bin/python bin/manage.py config set application.login-message "$ESCAPED_MESSAGE" 2>/dev/null || echo "Warning: Failed to set login message" fi # Start the PDF TEI Editor application bound to all interfaces for Docker exec .venv/bin/python bin/start-prod 0.0.0.0 $PORT