"feat: Implement auto logout functionality via static JS
This commit is contained in:
@@ -5866,6 +5866,108 @@ def export_guest_requests():
|
||||
|
||||
# ===== ENDE ADMIN GASTAUFTRÄGE API-ENDPUNKTE =====
|
||||
|
||||
@app.route("/api/user/settings/auto-logout", methods=["GET"])
|
||||
@login_required
|
||||
def get_auto_logout_settings():
|
||||
"""Holt nur die Auto-Logout-Einstellungen des Benutzers"""
|
||||
try:
|
||||
user_settings = session.get('user_settings', {})
|
||||
auto_logout = user_settings.get('privacy', {}).get('auto_logout', 60)
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"auto_logout": auto_logout
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
user_logger.error(f"Fehler beim Laden der Auto-Logout-Einstellungen: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler beim Laden der Auto-Logout-Einstellungen"
|
||||
}), 500
|
||||
|
||||
@app.route("/api/user/setting", methods=["PATCH"])
|
||||
@login_required
|
||||
def update_single_setting():
|
||||
"""Aktualisiert eine einzelne Benutzereinstellung"""
|
||||
try:
|
||||
if not request.is_json:
|
||||
return jsonify({"error": "Anfrage muss im JSON-Format sein"}), 400
|
||||
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Keine Daten erhalten"}), 400
|
||||
|
||||
# Aktuelle Einstellungen laden
|
||||
user_settings = session.get('user_settings', {
|
||||
"theme": "system",
|
||||
"reduced_motion": False,
|
||||
"contrast": "normal",
|
||||
"notifications": {
|
||||
"new_jobs": True,
|
||||
"job_updates": True,
|
||||
"system": True,
|
||||
"email": False
|
||||
},
|
||||
"privacy": {
|
||||
"activity_logs": True,
|
||||
"two_factor": False,
|
||||
"auto_logout": 60
|
||||
}
|
||||
})
|
||||
|
||||
# Einzelne Einstellung aktualisieren
|
||||
for key, value in data.items():
|
||||
if key == "auto_logout":
|
||||
# Validierung für Auto-Logout
|
||||
try:
|
||||
timeout = int(value) if value != "never" else "never"
|
||||
if timeout != "never" and (timeout < 5 or timeout > 480):
|
||||
return jsonify({"error": "Auto-Logout muss zwischen 5 und 480 Minuten liegen"}), 400
|
||||
user_settings.setdefault('privacy', {})['auto_logout'] = timeout
|
||||
except (ValueError, TypeError):
|
||||
return jsonify({"error": "Ungültiger Auto-Logout-Wert"}), 400
|
||||
|
||||
user_settings['last_updated'] = datetime.now().isoformat()
|
||||
session['user_settings'] = user_settings
|
||||
|
||||
user_logger.info(f"Benutzer {current_user.username} hat Einstellung '{key}' aktualisiert")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "Einstellung erfolgreich aktualisiert"
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
user_logger.error(f"Fehler beim Aktualisieren der Einzeleinstellung: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler beim Aktualisieren der Einstellung"
|
||||
}), 500
|
||||
|
||||
@app.route("/api/auth/keep-alive", methods=["POST"])
|
||||
@login_required
|
||||
def keep_alive():
|
||||
"""Keep-Alive-Endpunkt für Auto-Logout-System"""
|
||||
try:
|
||||
# Session-Timestamp aktualisieren
|
||||
session.permanent = True
|
||||
session.modified = True
|
||||
|
||||
auth_logger.info(f"Keep-Alive für Benutzer {current_user.username}")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "Session verlängert",
|
||||
"timestamp": datetime.now().isoformat()
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
auth_logger.error(f"Fehler beim Keep-Alive: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler beim Verlängern der Session"
|
||||
}), 500
|
||||
|
||||
# ===== STARTUP UND MAIN =====
|
||||
if __name__ == "__main__":
|
||||
|
Reference in New Issue
Block a user