feat: add session expiry warning
Some checks failed
CI / python-validation (push) Has been cancelled
CI / docker-release-gate (push) Has been cancelled
i18n / compile-translations (push) Has been cancelled

This commit is contained in:
Md Bayazid Bostame
2026-04-01 22:04:31 +02:00
parent 5fab01d57a
commit e47b1b3110
7 changed files with 188 additions and 1 deletions

View File

@@ -14,6 +14,16 @@
{% block extra_head %}{% endblock %}
</head>
<body{% block body_attrs %}{% endblock %}>
{% if request.user.is_authenticated %}
<script>
window.WorkdockSessionConfig = {
idleTimeoutSeconds: {{ session_idle_timeout_seconds|default:0 }},
reauthTimeoutSeconds: {{ session_reauth_timeout_seconds|default:0 }},
keepaliveUrl: "/session/keepalive/",
loginUrl: "/accounts/login/"
};
</script>
{% endif %}
{% block pre_shell %}{% endblock %}
{% if portal_trial_enabled %}
<div class="app-trial-banner{% if portal_trial_expired %} is-expired{% endif %}">
@@ -93,8 +103,29 @@
</div>
</div>
</div>
<div class="confirm-modal" id="app-session-warning-modal" hidden aria-hidden="true">
<div class="confirm-backdrop"></div>
<div class="confirm-dialog" role="dialog" aria-modal="true" aria-labelledby="app-session-warning-title" aria-describedby="app-session-warning-copy">
<div class="confirm-dialog-head">
<p class="action-progress-kicker">{% trans "Sitzung" %}</p>
<h2 id="app-session-warning-title">{% trans "Ihre Sitzung läuft bald ab" %}</h2>
</div>
<p class="confirm-message" id="app-session-warning-copy">
{% trans "Sie sind weiterhin angemeldet, aber diese Sitzung wird bald ablaufen. Bleiben Sie aktiv, wenn Sie weiterarbeiten möchten." %}
</p>
<p class="confirm-message" id="app-session-warning-countdown"></p>
<div class="confirm-actions">
<form method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button class="btn btn-secondary" type="submit">{% trans "Abmelden" %}</button>
</form>
<button class="btn btn-primary" type="button" id="app-session-warning-extend">{% trans "Angemeldet bleiben" %}</button>
</div>
</div>
</div>
<script src="{% static 'workflows/js/confirm_dialog.js' %}?v={{ static_asset_version }}"></script>
<script src="{% static 'workflows/js/action_progress.js' %}?v={{ static_asset_version }}"></script>
<script src="{% static 'workflows/js/session_warning.js' %}?v={{ static_asset_version }}"></script>
{% block extra_scripts %}{% endblock %}
</body>
</html>