diff --git a/src/i18n/de.json b/src/i18n/de.json index 52d7ba9..6ca9cf1 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -9,7 +9,10 @@ "create_qr": "QR erstellen", "bulk_creation": "Massen-Erstellung", "analytics": "Analytik", - "settings": "Einstellungen" + "settings": "Einstellungen", + "cta": "Kostenlos starten", + "tools": "Kostenlose Tools", + "all_free": "Alle Generatoren sind 100% kostenlos" }, "hero": { "badge": "Kostenloser QR-Code-Generator", @@ -64,6 +67,8 @@ "demo_note": "Dies ist ein Demo-QR-Code" }, "static_vs_dynamic": { + "title": "Warum dynamische QR-Codes Ihnen Geld sparen", + "description": "Hören Sie auf, Materialien neu zu drucken. Wechseln Sie Ziele sofort und verfolgen Sie jeden Scan.", "static": { "title": "Statische QR-Codes", "subtitle": "Immer kostenlos", @@ -97,6 +102,10 @@ "title": "Vollständige Anpassung", "description": "Branden Sie Ihre QR-Codes mit individuellen Farben, Logos und Styling-Optionen." }, + "unlimited": { + "title": "Unbegrenzte statische QR-Codes", + "description": "Erstellen Sie so viele statische QR-Codes wie Sie benötigen. Kostenlos für immer, ohne Limits." + }, "bulk": { "title": "Bulk-Operationen", "description": "Erstellen Sie hunderte von QR-Codes auf einmal mit CSV-Import und Batch-Verarbeitung." @@ -370,5 +379,22 @@ "loading": "Lädt...", "error": "Ein Fehler ist aufgetreten", "success": "Erfolgreich!" + }, + "footer": { + "product": "Produkt", + "features": "Funktionen", + "pricing": "Preise", + "faq": "FAQ", + "blog": "Blog", + "resources": "Ressourcen", + "full_pricing": "Alle Preise", + "all_questions": "Alle Fragen", + "all_articles": "Alle Artikel", + "get_started": "Loslegen", + "legal": "Rechtliches", + "privacy_policy": "Datenschutzerklärung", + "tagline": "Erstellen Sie benutzerdefinierte QR-Codes in Sekunden mit erweitertem Tracking und Analysen.", + "newsletter": "Newsletter-Anmeldung", + "rights_reserved": "QR Master. Alle Rechte vorbehalten." } } \ No newline at end of file diff --git a/src/lib/auth.ts b/src/lib/auth.ts index ef49773..c5bfd6d 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -43,28 +43,37 @@ export const authOptions: NextAuthOptions = { id: user.id, email: user.email, name: user.name, + plan: user.plan || 'FREE', }; }, }), ...(process.env.GOOGLE_CLIENT_ID && process.env.GOOGLE_CLIENT_SECRET ? [ - GoogleProvider({ - clientId: process.env.GOOGLE_CLIENT_ID, - clientSecret: process.env.GOOGLE_CLIENT_SECRET, - }), - ] + GoogleProvider({ + clientId: process.env.GOOGLE_CLIENT_ID, + clientSecret: process.env.GOOGLE_CLIENT_SECRET, + }), + ] : []), ], callbacks: { - async jwt({ token, user }) { + async jwt({ token, user, trigger, session }) { if (user) { token.id = user.id; + token.plan = user.plan; } + + // Update session support + if (trigger === "update" && session?.plan) { + token.plan = session.plan; + } + return token; }, async session({ session, token }) { if (session?.user) { session.user.id = token.id as string; + session.user.plan = (token.plan as string) || 'FREE'; } return session; }, diff --git a/src/types/next-auth.d.ts b/src/types/next-auth.d.ts index 6e47e18..e89cef5 100644 --- a/src/types/next-auth.d.ts +++ b/src/types/next-auth.d.ts @@ -4,10 +4,12 @@ declare module 'next-auth' { interface Session { user: { id: string; + plan: string; } & DefaultSession['user']; } interface User { id: string; + plan: string; } } \ No newline at end of file