diff --git a/app/main.py b/app/main.py index 1320b3a..6611e0e 100644 --- a/app/main.py +++ b/app/main.py @@ -31,9 +31,12 @@ async def lifespan(_app: FastAPI): init_db() init_webhook_tables() from app.db import get_conn + from app.password_utils import hash_password + admin_hash = hash_password("FlowDeck2026!") with get_conn() as conn: conn.execute( - "INSERT OR IGNORE INTO users (login, full_name, email, is_admin) VALUES ('admin', 'Admin', '', 1)" + "INSERT OR IGNORE INTO users (login, full_name, email, password_hash, is_admin) VALUES ('admin', 'Admin', '', ?, 1)", + (admin_hash,) ) conn.commit() logger.info("FlowDeck v4.0.0 started on port %d", settings.app_port) diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 9feaddb..d892790 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -317,11 +317,14 @@ async def accounts_page(request: Request): @router.get("/help", response_class=HTMLResponse) async def help_page(request: Request): """Comprehensive help & documentation page.""" - from jinja2 import Environment, FileSystemLoader + from jinja2 import Environment, FileSystemLoader, BaseLoader env = Environment(loader=FileSystemLoader("app/templates")) sidebar = _sidebar_data(request, []) - template = env.get_template("base.html") - return HTMLResponse(template.render( + # Render via a block-based template so content_html lands in {% block content %} + block_tpl = env.from_string( + '{% extends "base.html" %}{% block content %}{{ content_html|safe }}{% endblock %}' + ) + return HTMLResponse(block_tpl.render( **sidebar, request=request, page_title="Help", diff --git a/app/routers/my_tasks.py b/app/routers/my_tasks.py index 3d5dbee..cf6a02a 100644 --- a/app/routers/my_tasks.py +++ b/app/routers/my_tasks.py @@ -104,8 +104,10 @@ async def my_tasks_dashboard(request: Request, view: str = "all", days: int = 7) from app.routers.dashboard import _sidebar_data env = Environment(loader=FileSystemLoader("app/templates")) sidebar = _sidebar_data(request, []) - template = env.get_template("base.html") - return template.render( + block_tpl = env.from_string( + '{% extends "base.html" %}{% block content %}{{ content_html|safe }}{% endblock %}' + ) + return block_tpl.render( **sidebar, request=request, content_html=content_html,