diff --git a/app/main.py b/app/main.py index df8f5ae..536e349 100644 --- a/app/main.py +++ b/app/main.py @@ -56,6 +56,10 @@ def _security_headers(resp): resp.headers['X-Frame-Options'] = 'DENY' resp.headers['X-Content-Type-Options'] = 'nosniff' resp.headers['Referrer-Policy'] = 'no-referrer' + resp.headers['Permissions-Policy'] = ( + 'geolocation=(), camera=(), microphone=(), payment=(), usb=(), ' + 'accelerometer=(), gyroscope=(), magnetometer=()' + ) resp.headers.setdefault('Content-Security-Policy', CSP) # HTML-Seiten (Formulare/Session-Daten) nicht cachen lassen. if resp.mimetype == 'text/html': @@ -262,7 +266,7 @@ def login(): return render_template('login.html') -@app.route('/logout') +@app.route('/logout', methods=['POST']) def logout(): session.clear() return redirect(url_for('login')) diff --git a/app/static/css/app.css b/app/static/css/app.css index ae8312d..25565be 100644 --- a/app/static/css/app.css +++ b/app/static/css/app.css @@ -13,6 +13,7 @@ body { background: #f4f6f9; min-height: 100vh; } background: var(--sidebar-hover); color: #fff; } #sidebar .nav-link i { width: 1.3em; } +#sidebar button.nav-link { background: none; border: 0; width: 100%; text-align: left; cursor: pointer; } #sidebar hr { border-color: var(--sidebar-hover); } .main-content { flex: 1; padding: 2rem; min-width: 0; } .card { border: none; box-shadow: 0 1px 4px rgba(0,0,0,.08); } diff --git a/app/templates/base.html b/app/templates/base.html index 4b7d1c9..210add2 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -5,8 +5,10 @@