Nicht-eingeloggte Nutzer sollen sich einfacher registrieren/authentifizieren können. Speichern oder Bestellen nicht-eingeloggte Nutzer auf der Kundendaten-Seite, so soll ein Popup aufgehen, wo sie einen Bestätigungscode eingeben können. Dieser Code wird umgehend an ihre eingegene Email gesendet. Wird der Code efolgreich eingegeben gibt es zwei Fälle: Unter der Email existiert bereits ein Account → Der Ausweis wird dann diesem User zugewiesen Unter der Email existiet noch kein Account → Ein neuer Account wird angelegt und der Ausweise dem neuen Account zugewiesen Wird ein neuner Account automatisch angelegt, so benötigen wir auch noch einen Prozess, wie der Nutzer dann sein Passwort vergeben kann. Idealerweise erhält er in seiner Willkommensmail einen Link zur Passwort setzung. Alternativ nutzt er einfach die bestehende Passwortrücksetzen-Funktion auf der Webseite. Um bei der Erstregistrierung soll ein Zahlencode an die eingegebene E-Mail verschickt werden. Dieser muss dann vom User eingegeben werden um die Registrierung bzw. meistens ja dann die Erstbestellung abzuschließen. Der Zahlencode kann ja dann das Passwort sein. Wir weisen den Kunden darauf hin sich ein eigenes Passwort zu vergeben.
96 lines
2.9 KiB
Plaintext
96 lines
2.9 KiB
Plaintext
---
|
|
import MinimalLayout from "#layouts/MinimalLayout.astro";
|
|
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
|
|
import PINVerifyModule from "#modules/PINVerifyModule.svelte";
|
|
import { generatePinCode } from "#lib/pin";
|
|
import { logger } from "#lib/logger";
|
|
import { transport } from "#lib/mail";
|
|
import { prisma } from "#lib/server/prisma";
|
|
import { TokenType } from "#lib/auth/types";
|
|
import { encodeToken } from "#lib/auth/token";
|
|
import { BASE_URI } from "#lib/constants";
|
|
|
|
const valid = await validateAccessTokenServer(Astro)
|
|
|
|
if (valid) {
|
|
return Astro.redirect("/dashboard")
|
|
}
|
|
|
|
const redirect = Astro.url.searchParams.get("r");
|
|
const email = Astro.url.searchParams.get("e");
|
|
|
|
if (!email) {
|
|
return Astro.redirect("/auth/signup")
|
|
}
|
|
|
|
const user = await prisma.benutzer.findUnique({
|
|
where: {
|
|
email: email
|
|
}
|
|
})
|
|
|
|
if (!user) {
|
|
// Der Nutzer existiert nicht, weiter zur Registrierung
|
|
return Astro.redirect("/auth/signup")
|
|
}
|
|
|
|
if (user?.verified) {
|
|
// Der Nutzer ist bereits verifiziert, wir können ihn auch direkt zum Login weiterleiten
|
|
return Astro.redirect(redirect ?? "/auth/login")
|
|
}
|
|
|
|
const verificationJwt = encodeToken({
|
|
typ: TokenType.Verify,
|
|
exp: Date.now() + (15 * 60 * 1000),
|
|
id: user.id
|
|
})
|
|
|
|
const pin = generatePinCode(email); // 30 Minuten
|
|
logger.info(`Generated PIN ${email}: ${pin}`);
|
|
|
|
await transport.sendMail({
|
|
from: `"IBCornelsen" <info@online-energieausweis.org>`,
|
|
to: email,
|
|
subject: `Ihre Registrierung bei IBCornelsen - Bitte bestätigen Sie Ihre E-Mail-Adresse`,
|
|
bcc: "info@online-energieausweis.org",
|
|
html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
|
|
<p>vielen Dank für Ihre Registrierung bei IBCornelsen. Ihr Benutzerkonto wurde erfolgreich erstellt.<br><br>
|
|
|
|
Um Ihre Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link, um Ihre E-Mail-Adresse zu bestätigen:<br><br>
|
|
|
|
<a href="${BASE_URI}/auth/verify?t=${verificationJwt}">E-Mail-Adresse bestätigen</a><br></p>
|
|
<p>Alternativ können Sie den folgenden Bestätigungscode verwenden:<br><br>
|
|
<strong style="font-size: 24px;">${pin}</strong><br><br>
|
|
Dieser Code ist 30 Minuten gültig.<br><br>
|
|
|
|
Sollten Sie diese Registrierung nicht vorgenommen haben, können Sie diese E-Mail einfach ignorieren. Ihr Benutzerkonto wird in diesem Fall nicht aktiviert.<br><br>
|
|
|
|
Falls Sie Fragen haben oder Unterstützung benötigen, stehen wir Ihnen gerne zur Verfügung. Kontaktieren Sie uns einfach unter <a href="mailto:support@online-energieausweis.org">support@online-energieausweis.org</a>.
|
|
<p>
|
|
Mit freundlichen Grüßen,
|
|
<br>
|
|
Dipl.-Ing. Jens Cornelsen
|
|
<br>
|
|
<br>
|
|
<strong>IB Cornelsen</strong>
|
|
<br>
|
|
Katendeich 5A
|
|
<br>
|
|
21035 Hamburg
|
|
<br>
|
|
www.online-energieausweis.org
|
|
<br>
|
|
<br>
|
|
fon 040 · 209339850
|
|
<br>
|
|
fax 040 · 209339859
|
|
</p>`
|
|
});
|
|
|
|
|
|
---
|
|
|
|
<MinimalLayout title="Verifizierung - IBCornelsen">
|
|
<PINVerifyModule client:load redirect={redirect} email={email} requested={true}></PINVerifyModule>
|
|
</MinimalLayout>
|