Fix: Echte Umlaute statt Umschreibungen (gültig, für, prüfen)
Dieser Commit ist enthalten in:
@@ -1,4 +1,4 @@
|
|||||||
"""Auth-Router: Magic Link Login fuer Globe."""
|
"""Auth-Router: Magic Link Login für Globe."""
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ async def request_magic_link(req: LoginRequest, db=Depends(get_db)):
|
|||||||
"""Sendet Magic Link per E-Mail."""
|
"""Sendet Magic Link per E-Mail."""
|
||||||
email = req.email.lower().strip()
|
email = req.email.lower().strip()
|
||||||
|
|
||||||
# User pruefen
|
# User prüfen
|
||||||
cursor = await db.execute(
|
cursor = await db.execute(
|
||||||
"SELECT id, username, email, is_active, globe_access FROM users WHERE LOWER(email) = ?",
|
"SELECT id, username, email, is_active, globe_access FROM users WHERE LOWER(email) = ?",
|
||||||
(email,),
|
(email,),
|
||||||
@@ -60,7 +60,7 @@ async def request_magic_link(req: LoginRequest, db=Depends(get_db)):
|
|||||||
|
|
||||||
@router.get("/verify")
|
@router.get("/verify")
|
||||||
async def verify_token(token: str, db=Depends(get_db)):
|
async def verify_token(token: str, db=Depends(get_db)):
|
||||||
"""Verifiziert Magic Link Token, gibt JWT zurueck."""
|
"""Verifiziert Magic Link Token, gibt JWT zurück."""
|
||||||
cursor = await db.execute(
|
cursor = await db.execute(
|
||||||
"""SELECT ml.user_id, ml.expires_at, ml.is_used,
|
"""SELECT ml.user_id, ml.expires_at, ml.is_used,
|
||||||
u.username, u.email, u.is_active, u.globe_access, u.role
|
u.username, u.email, u.is_active, u.globe_access, u.role
|
||||||
@@ -70,7 +70,7 @@ async def verify_token(token: str, db=Depends(get_db)):
|
|||||||
)
|
)
|
||||||
row = await cursor.fetchone()
|
row = await cursor.fetchone()
|
||||||
if not row:
|
if not row:
|
||||||
raise HTTPException(status_code=400, detail="Ungueltiger Link.")
|
raise HTTPException(status_code=400, detail="Ungültiger Link.")
|
||||||
if row["is_used"]:
|
if row["is_used"]:
|
||||||
raise HTTPException(status_code=400, detail="Link wurde bereits verwendet.")
|
raise HTTPException(status_code=400, detail="Link wurde bereits verwendet.")
|
||||||
if datetime.fromisoformat(row["expires_at"]) < datetime.now(timezone.utc):
|
if datetime.fromisoformat(row["expires_at"]) < datetime.now(timezone.utc):
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"""E-Mail-Versand fuer Globe Magic Links."""
|
"""E-Mail-Versand für Globe Magic Links."""
|
||||||
import logging
|
import logging
|
||||||
import aiosmtplib
|
import aiosmtplib
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
@@ -23,7 +23,7 @@ async def send_magic_link_email(to_email: str, link: str):
|
|||||||
<a href="{link}" style="color: #00ff88; word-break: break-all; font-size: 11px;">{link}</a>
|
<a href="{link}" style="color: #00ff88; word-break: break-all; font-size: 11px;">{link}</a>
|
||||||
</p>
|
</p>
|
||||||
<p style="font-size: 11px; color: rgba(255,255,255,0.3); margin-top: 24px;">
|
<p style="font-size: 11px; color: rgba(255,255,255,0.3); margin-top: 24px;">
|
||||||
Dieser Link ist 10 Minuten gueltig. Falls du diese Anfrage nicht gesendet hast, ignoriere diese E-Mail.
|
Dieser Link ist 10 Minuten gültig. Falls du diese Anfrage nicht gesendet hast, ignoriere diese E-Mail.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
@@ -32,7 +32,7 @@ async def send_magic_link_email(to_email: str, link: str):
|
|||||||
msg["From"] = f"{SMTP_FROM_NAME} <{SMTP_FROM_EMAIL}>"
|
msg["From"] = f"{SMTP_FROM_NAME} <{SMTP_FROM_EMAIL}>"
|
||||||
msg["To"] = to_email
|
msg["To"] = to_email
|
||||||
msg["Subject"] = "AegisSight Globe — Anmelde-Link"
|
msg["Subject"] = "AegisSight Globe — Anmelde-Link"
|
||||||
msg.attach(MIMEText(f"Dein Globe-Anmeldelink:\n\n{link}\n\nGueltig fuer 10 Minuten.", "plain"))
|
msg.attach(MIMEText(f"Dein Globe-Anmeldelink:\n\n{link}\n\nGültig für 10 Minuten.", "plain"))
|
||||||
msg.attach(MIMEText(html, "html"))
|
msg.attach(MIMEText(html, "html"))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren