Reservierungssystem: E-Mail-Feld & Bild-Captcha hinzugefuegt
Aenderungen: - E-Mail-Feld im Reservierungs-Formular hinzugefuegt (Pflichtfeld) - Math-Captcha durch Bild-Captcha (4 Zeichen) ersetzt - E-Mail-Validierung im Backend - Captcha-Validierung fuer Reservierungen - Pillow zu Dockerfile hinzugefuegt
This commit is contained in:
+21
@@ -46,6 +46,15 @@ DEFAULT_OPEN_HOUR = 10 # 10:00
|
||||
DEFAULT_CLOSE_HOUR = 23 # 23:00
|
||||
RESERVATION_DURATION = 120 # Minuten
|
||||
|
||||
|
||||
|
||||
def is_valid_email(email):
|
||||
"""Einfache E-Mail-Validierung"""
|
||||
if not email:
|
||||
return False
|
||||
pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
|
||||
return re.match(pattern, email) is not None
|
||||
|
||||
def init_app():
|
||||
"""App initialisieren"""
|
||||
init_db()
|
||||
@@ -273,6 +282,18 @@ def reservations():
|
||||
# POST: Neue Reservierung
|
||||
data = request.get_json()
|
||||
|
||||
# Captcha validieren
|
||||
captcha_token = data.get("captcha_token")
|
||||
captcha_answer = data.get("captcha_answer")
|
||||
if not verify_captcha(captcha_token, captcha_answer):
|
||||
return jsonify({"error": "Ungueltiges oder abgelaufenes Captcha"}), 400
|
||||
|
||||
# E-Mail validieren
|
||||
email = data.get("email", "").strip()
|
||||
if not email or not is_valid_email(email):
|
||||
return jsonify({"error": "Gueltige E-Mail-Adresse erforderlich"}), 400
|
||||
data["email"] = email
|
||||
|
||||
# Fix: time -> time_from/time_to Mapping
|
||||
# Frontend sendet 'time', Backend erwartet 'time_from'/'time_to'
|
||||
if 'time' in data and 'time_from' not in data:
|
||||
|
||||
Reference in New Issue
Block a user