- add public.trim_ws mirroring Dart String.trim - require JSON string metadata, tolerate non-string locale in templates - add tests, align docs with review Refs #1 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
49 lines
3.5 KiB
HTML
49 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
{{- /*
|
|
AUTH-CFG-18: Passwort-zurücksetzen-Mail (KTO-01 Kriterium 8, 11).
|
|
Sprache aus user_metadata.locale ("de"), sonst Englisch. Keine externen Ressourcen, keine Bilder.
|
|
Der Link führt auf die App-Seite /auth/confirm; erst der Klick dort löst die Prüfung aus (Spec E3).
|
|
*/ -}}
|
|
{{ if and .Data (eq (printf "%v" (index .Data "locale")) "de") }}
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Passwort für Shuffle zurücksetzen</title>
|
|
</head>
|
|
<body style="margin:0;padding:24px;background-color:#f4f4f5;font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1a1a1a;">
|
|
<div style="max-width:560px;margin:0 auto;padding:24px;background-color:#ffffff;">
|
|
<h1 style="margin:0 0 16px 0;font-size:22px;line-height:1.3;color:#1a1a1a;">Passwort zurücksetzen</h1>
|
|
<p style="margin:0 0 16px 0;">Für dein Shuffle-Konto wurde ein neues Passwort angefordert. Mit dem folgenden Knopf legst du ein neues Passwort fest.</p>
|
|
<p style="margin:0 0 24px 0;">
|
|
<a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery" style="display:inline-block;padding:14px 24px;background-color:#1d4ed8;color:#ffffff;font-weight:bold;text-decoration:none;border-radius:6px;">Neues Passwort festlegen</a>
|
|
</p>
|
|
<p style="margin:0 0 8px 0;">Der Link ist 1 Stunde gültig und kann nur einmal verwendet werden.</p>
|
|
<p style="margin:0 0 16px 0;">Falls der Knopf nicht funktioniert, kopiere diese Adresse in die Adresszeile deines Browsers:</p>
|
|
<p style="margin:0 0 24px 0;word-break:break-all;"><a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery" style="color:#1d4ed8;">{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery</a></p>
|
|
<p style="margin:0;color:#4b5563;">Wenn du das nicht warst, ignoriere diese E-Mail. Dein Passwort bleibt dann unverändert.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{ else }}
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Reset your Shuffle password</title>
|
|
</head>
|
|
<body style="margin:0;padding:24px;background-color:#f4f4f5;font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1a1a1a;">
|
|
<div style="max-width:560px;margin:0 auto;padding:24px;background-color:#ffffff;">
|
|
<h1 style="margin:0 0 16px 0;font-size:22px;line-height:1.3;color:#1a1a1a;">Reset your password</h1>
|
|
<p style="margin:0 0 16px 0;">A new password was requested for your Shuffle account. Use the button below to choose a new password.</p>
|
|
<p style="margin:0 0 24px 0;">
|
|
<a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery" style="display:inline-block;padding:14px 24px;background-color:#1d4ed8;color:#ffffff;font-weight:bold;text-decoration:none;border-radius:6px;">Set a new password</a>
|
|
</p>
|
|
<p style="margin:0 0 8px 0;">The link is valid for 1 hour and can only be used once.</p>
|
|
<p style="margin:0 0 16px 0;">If the button does not work, copy this address into your browser's address bar:</p>
|
|
<p style="margin:0 0 24px 0;word-break:break-all;"><a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery" style="color:#1d4ed8;">{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery</a></p>
|
|
<p style="margin:0;color:#4b5563;">If this wasn't you, you can ignore this email. Your password will stay the same.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{ end }}
|