Final!
This commit is contained in:
parent
f67945d8e7
commit
0409fe2afd
|
|
@ -9,7 +9,10 @@
|
||||||
"create_qr": "QR erstellen",
|
"create_qr": "QR erstellen",
|
||||||
"bulk_creation": "Massen-Erstellung",
|
"bulk_creation": "Massen-Erstellung",
|
||||||
"analytics": "Analytik",
|
"analytics": "Analytik",
|
||||||
"settings": "Einstellungen"
|
"settings": "Einstellungen",
|
||||||
|
"cta": "Kostenlos starten",
|
||||||
|
"tools": "Kostenlose Tools",
|
||||||
|
"all_free": "Alle Generatoren sind 100% kostenlos"
|
||||||
},
|
},
|
||||||
"hero": {
|
"hero": {
|
||||||
"badge": "Kostenloser QR-Code-Generator",
|
"badge": "Kostenloser QR-Code-Generator",
|
||||||
|
|
@ -64,6 +67,8 @@
|
||||||
"demo_note": "Dies ist ein Demo-QR-Code"
|
"demo_note": "Dies ist ein Demo-QR-Code"
|
||||||
},
|
},
|
||||||
"static_vs_dynamic": {
|
"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": {
|
"static": {
|
||||||
"title": "Statische QR-Codes",
|
"title": "Statische QR-Codes",
|
||||||
"subtitle": "Immer kostenlos",
|
"subtitle": "Immer kostenlos",
|
||||||
|
|
@ -97,6 +102,10 @@
|
||||||
"title": "Vollständige Anpassung",
|
"title": "Vollständige Anpassung",
|
||||||
"description": "Branden Sie Ihre QR-Codes mit individuellen Farben, Logos und Styling-Optionen."
|
"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": {
|
"bulk": {
|
||||||
"title": "Bulk-Operationen",
|
"title": "Bulk-Operationen",
|
||||||
"description": "Erstellen Sie hunderte von QR-Codes auf einmal mit CSV-Import und Batch-Verarbeitung."
|
"description": "Erstellen Sie hunderte von QR-Codes auf einmal mit CSV-Import und Batch-Verarbeitung."
|
||||||
|
|
@ -370,5 +379,22 @@
|
||||||
"loading": "Lädt...",
|
"loading": "Lädt...",
|
||||||
"error": "Ein Fehler ist aufgetreten",
|
"error": "Ein Fehler ist aufgetreten",
|
||||||
"success": "Erfolgreich!"
|
"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."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -43,6 +43,7 @@ export const authOptions: NextAuthOptions = {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
email: user.email,
|
email: user.email,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
|
plan: user.plan || 'FREE',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
@ -56,15 +57,23 @@ export const authOptions: NextAuthOptions = {
|
||||||
: []),
|
: []),
|
||||||
],
|
],
|
||||||
callbacks: {
|
callbacks: {
|
||||||
async jwt({ token, user }) {
|
async jwt({ token, user, trigger, session }) {
|
||||||
if (user) {
|
if (user) {
|
||||||
token.id = user.id;
|
token.id = user.id;
|
||||||
|
token.plan = user.plan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update session support
|
||||||
|
if (trigger === "update" && session?.plan) {
|
||||||
|
token.plan = session.plan;
|
||||||
|
}
|
||||||
|
|
||||||
return token;
|
return token;
|
||||||
},
|
},
|
||||||
async session({ session, token }) {
|
async session({ session, token }) {
|
||||||
if (session?.user) {
|
if (session?.user) {
|
||||||
session.user.id = token.id as string;
|
session.user.id = token.id as string;
|
||||||
|
session.user.plan = (token.plan as string) || 'FREE';
|
||||||
}
|
}
|
||||||
return session;
|
return session;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,12 @@ declare module 'next-auth' {
|
||||||
interface Session {
|
interface Session {
|
||||||
user: {
|
user: {
|
||||||
id: string;
|
id: string;
|
||||||
|
plan: string;
|
||||||
} & DefaultSession['user'];
|
} & DefaultSession['user'];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface User {
|
interface User {
|
||||||
id: string;
|
id: string;
|
||||||
|
plan: string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue