From 7f6f52c7832371c85221eaab55ff9092aa6ec6aa Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Wed, 4 Jun 2025 17:22:23 +0200 Subject: [PATCH] modified: app.py modified: templates/playlists.html --- app.py | 23 +++++++++++++++++++++++ templates/playlists.html | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/app.py b/app.py index dea329f..370dd27 100644 --- a/app.py +++ b/app.py @@ -11,6 +11,8 @@ from difflib import SequenceMatcher import re import json import unicodedata +import secrets +from datetime import datetime, timedelta app = Flask(__name__) app.secret_key = os.getenv("SECRET_KEY") @@ -295,5 +297,26 @@ def reset_quiz(playlist_id): def gamemodes(playlist_id): return render_template("gamemodes.html", playlist_id=playlist_id, translations=get_translations()) +invites = {} # {token: expiry_datetime} + +@app.route("/invite") +def invite(): + duration = int(request.args.get("duration", 60)) # Minuten + token = secrets.token_urlsafe(16) + expires = datetime.utcnow() + timedelta(minutes=duration) + invites[token] = expires + invite_link = url_for('guest_join', token=token, _external=True) + return render_template("invite.html", invite_link=invite_link, expires=expires) + +@app.route("/invite/") +def guest_join(token): + expires = invites.get(token) + if not expires or expires < datetime.utcnow(): + return "Invite link expired or invalid.", 403 + # Setze ein Cookie, damit der Gast als eingeladener User erkannt wird (optional) + resp = redirect(url_for('login')) + resp.set_cookie("guest_token", token, max_age=60*60) # 1 Stunde gültig + return resp + if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True) diff --git a/templates/playlists.html b/templates/playlists.html index 3ab8bfe..05fddd2 100644 --- a/templates/playlists.html +++ b/templates/playlists.html @@ -51,6 +51,22 @@ background-color: #1ed760; transform: scale(1.04); } + .btn { + display: inline-block; + padding: 10px 20px; + background-color: #007bff; + color: #fff; + border-radius: 5px; + text-decoration: none; + font-size: 1em; + font-weight: bold; + transition: background 0.2s, transform 0.2s; + margin-top: 20px; + } + .btn:hover { + background-color: #0056b3; + transform: scale(1.05); + } @@ -64,6 +80,7 @@
  • {{ pl.name }}
  • {% endfor %} + Gast einladen (1h-Link)