{#-
dashboard_client.html — the client role's dashboard. Inherits layout_app.
Backend: GET /dashboard -> render_template("dashboard_client.html") when
current_role() != 'admin' (app.py).
CONTEXT (all real, no placeholders):
current_user : dict injected globally by the app.py context_processor
(auth.current_user() -> db.get_user()). Fields available:
id, email, role, status, created_at, updated_at.
password_hash is never used in a template.
This page shows the signed-in client the real state of their own account and
the real actions available to them — change password (GET /forgot) and log
out (POST /logout) — using only what the framework already exposes. No mock
numbers. As you build client features, add real cards here the same way.
Note how little this decides: the sidebar, user card, theme, collapse, and
security all come from layout_app. This page only fills the topbar + content.
-#}
{% extends "layout_app.html" %}
{% block title %}Dashboard{% endblock %}
{% block app_topbar %}
Welcome back
{%- if current_user.status == 'active' %} Active {%- elif current_user.status == 'pending' %} Pending {%- else %} {{ current_user.status | capitalize }} {%- endif %}
{%- if current_user.status == 'active' %}Your account is active. {%- elif current_user.status == 'pending' %}Finish setup to activate. {%- else %}Contact support if this is unexpected.{% endif %}
{{ current_user.created_at[:10] }}
Account created
{{ current_user.updated_at[:10] }}
Most recent account change