Fix: Echte Umlaute statt Umschreibungen (gültig, für, prüfen)
Dieser Commit ist enthalten in:
@@ -1,4 +1,4 @@
|
||||
"""HTML-E-Mail-Vorlagen fuer Magic Links, Einladungen und Benachrichtigungen."""
|
||||
"""HTML-E-Mail-Vorlagen für Magic Links, Einladungen und Benachrichtigungen."""
|
||||
|
||||
|
||||
def magic_link_login_email(username: str, link: str) -> tuple[str, str]:
|
||||
@@ -26,7 +26,7 @@ def magic_link_login_email(username: str, link: str) -> tuple[str, str]:
|
||||
<p style="color: #94a3b8; font-size: 13px; margin: 0 0 12px 0;">Oder kopieren Sie diesen Link in Ihren Browser:</p>
|
||||
<p style="color: #64748b; font-size: 11px; word-break: break-all; margin: 0 0 24px 0;">{link}</p>
|
||||
|
||||
<p style="color: #94a3b8; font-size: 13px; margin: 0;">Dieser Link ist 10 Minuten gueltig. Falls Sie diese Anmeldung nicht angefordert haben, ignorieren Sie diese E-Mail.</p>
|
||||
<p style="color: #94a3b8; font-size: 13px; margin: 0;">Dieser Link ist 10 Minuten gültig. Falls Sie diese Anmeldung nicht angefordert haben, ignorieren Sie diese E-Mail.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>"""
|
||||
@@ -39,7 +39,7 @@ def incident_notification_email(
|
||||
notifications: list[dict],
|
||||
dashboard_url: str,
|
||||
) -> tuple[str, str]:
|
||||
"""Erzeugt Benachrichtigungs-E-Mail fuer Lagen-Updates.
|
||||
"""Erzeugt Benachrichtigungs-E-Mail für Lagen-Updates.
|
||||
|
||||
Args:
|
||||
username: Empfaenger-Name
|
||||
|
||||
@@ -36,10 +36,10 @@ async def request_magic_link(
|
||||
email = data.email.lower().strip()
|
||||
ip = request.client.host if request.client else "unknown"
|
||||
|
||||
# Rate-Limit pruefen
|
||||
# Rate-Limit prüfen
|
||||
allowed, reason = magic_link_limiter.check(email, ip)
|
||||
if not allowed:
|
||||
logger.warning(f"Rate-Limit fuer {email} von {ip}: {reason}")
|
||||
logger.warning(f"Rate-Limit für {email} von {ip}: {reason}")
|
||||
return MagicLinkResponse(message="Wenn ein Konto existiert, wurde eine E-Mail gesendet.")
|
||||
|
||||
# Nutzer suchen
|
||||
@@ -65,7 +65,7 @@ async def request_magic_link(
|
||||
magic_link_limiter.record(email, ip)
|
||||
return MagicLinkResponse(message="Wenn ein Konto existiert, wurde eine E-Mail gesendet.")
|
||||
|
||||
# Lizenz pruefen
|
||||
# Lizenz prüfen
|
||||
from services.license_service import check_license
|
||||
lic = await check_license(db, user["organization_id"])
|
||||
if lic.get("status") == "org_disabled":
|
||||
@@ -76,7 +76,7 @@ async def request_magic_link(
|
||||
token = generate_magic_token()
|
||||
expires_at = (datetime.now(TIMEZONE) + timedelta(minutes=MAGIC_LINK_EXPIRE_MINUTES)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# Alte ungenutzte Magic Links fuer diese E-Mail invalidieren
|
||||
# Alte ungenutzte Magic Links für diese E-Mail invalidieren
|
||||
await db.execute(
|
||||
"UPDATE magic_links SET is_used = 1 WHERE email = ? AND is_used = 0",
|
||||
(email,),
|
||||
@@ -117,9 +117,9 @@ async def verify_magic_link(
|
||||
ml = await cursor.fetchone()
|
||||
|
||||
if not ml:
|
||||
raise HTTPException(status_code=400, detail="Ungueltiger oder bereits verwendeter Link")
|
||||
raise HTTPException(status_code=400, detail="Ungültiger oder bereits verwendeter Link")
|
||||
|
||||
# Ablauf pruefen
|
||||
# Ablauf prüfen
|
||||
now = datetime.now(TIMEZONE)
|
||||
expires = datetime.fromisoformat(ml["expires_at"])
|
||||
if expires.tzinfo is None:
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren