modified: app.py
modified: templates/playlists.html
This commit is contained in:
23
app.py
23
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/<token>")
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user