diff --git a/.env.example b/.env.example index 89d599be..f3391aa4 100644 --- a/.env.example +++ b/.env.example @@ -47,12 +47,6 @@ RCON_PORT=3001 # Falls back to NEXT_PUBLIC_APP_URL/imaging when only the app URL is set. # NEXT_PUBLIC_IMAGER_URL=https://epicnabbo.nl/imaging -# Optional OAuth (enabled when both id+secret are set) -DISCORD_CLIENT_ID= -DISCORD_CLIENT_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= - # Preferred email provider (HTTP API). Used before SMTP when set. RESEND_API_KEY= diff --git a/src/actions/link-discord.ts b/src/actions/link-discord.ts deleted file mode 100644 index c66ad28d..00000000 --- a/src/actions/link-discord.ts +++ /dev/null @@ -1,66 +0,0 @@ -"use server"; - -import { auth } from "@/lib/auth"; -import { logger } from "@/lib/logger"; -import { prisma } from "@/lib/prisma"; - -export async function linkDiscordId(discordId: string): Promise { - const session = await auth(); - if (!session?.user?.id) return "Not logged in"; - - const userId = Number(session.user.id); - if (!discordId || !/^\d{17,20}$/.test(discordId.trim())) { - return "Invalid Discord ID format"; - } - - const discordIdClean = discordId.trim(); - - try { - const existing = await prisma.socialAccounts.findUnique({ - where: { - provider_providerId: { - provider: "discord", - providerId: discordIdClean, - }, - }, - select: { userId: true }, - }); - if (existing && Number(existing.userId) !== userId) { - return "This Discord ID is already linked to another account"; - } - } catch { - return "Failed to check Discord ID"; - } - - try { - await prisma.socialAccounts.upsert({ - where: { - provider_providerId: { - provider: "discord", - providerId: discordIdClean, - }, - }, - create: { - userId: BigInt(userId), - provider: "discord", - providerId: discordIdClean, - createdAt: new Date(), - updatedAt: new Date(), - }, - update: { userId: BigInt(userId), updatedAt: new Date() }, - }); - - await prisma.user.update({ - where: { id: userId }, - data: { mailVerified: "1" }, - }); - - return null; - } catch (e) { - logger.error("Failed to link Discord account", { - module: "link-discord", - error: (e as Error).message, - }); - return "Failed to link Discord account"; - } -} diff --git a/src/actions/register.ts b/src/actions/register.ts index 0e637240..f4fbaa78 100644 --- a/src/actions/register.ts +++ b/src/actions/register.ts @@ -129,11 +129,5 @@ export async function register( return "Could not create the account (is the username unique?)"; } - if (hasEmail) { - redirect("/login?registered=1"); - } else { - const { signIn } = await import("@/lib/auth"); - await signIn("credentials", { username, password, redirect: false }); - redirect("/verify?method=discord"); - } + redirect("/login?registered=1"); } diff --git a/src/app/(site)/login/page.tsx b/src/app/(site)/login/page.tsx index dba5232b..d6edadaa 100644 --- a/src/app/(site)/login/page.tsx +++ b/src/app/(site)/login/page.tsx @@ -73,11 +73,7 @@ export default async function LoginPage() {
- {discordUrl && ( - - Discord - - )} +
diff --git a/src/app/(site)/page.tsx b/src/app/(site)/page.tsx index 5b58cedc..6358f876 100644 --- a/src/app/(site)/page.tsx +++ b/src/app/(site)/page.tsx @@ -99,11 +99,7 @@ export default async function Home() {
- {discordUrl && ( - - Discord - - )} +
diff --git a/src/app/(site)/register/page.tsx b/src/app/(site)/register/page.tsx index a721f0eb..aae99b9e 100644 --- a/src/app/(site)/register/page.tsx +++ b/src/app/(site)/register/page.tsx @@ -73,11 +73,7 @@ export default async function RegisterPage() {
- {discordUrl && ( - - Discord - - )} +
diff --git a/src/app/(site)/settings/connections/page.tsx b/src/app/(site)/settings/connections/page.tsx deleted file mode 100644 index 76b0646c..00000000 --- a/src/app/(site)/settings/connections/page.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import Link from "next/link"; -import { redirect } from "next/navigation"; -import { getTranslations } from "next-intl/server"; -import { ContentCard } from "@/components/public/ui"; -import { env } from "@/env"; -import { auth } from "@/lib/auth"; -import { prisma } from "@/lib/prisma"; - -export const dynamic = "force-dynamic"; - -// Social providers we can link. `available` reflects whether the OAuth app -// credentials are configured (mirrors src/lib/auth.ts, which only registers a -// provider when both its id + secret env vars are set). When unavailable the -// connect button is disabled so we don't bounce the user to a 404 sign-in URL. -const PROVIDERS = [ - { - key: "discord", - label: "Discord", - icon: "🎮", - available: Boolean(env.DISCORD_CLIENT_ID && env.DISCORD_CLIENT_SECRET), - }, - { - key: "google", - label: "Google", - icon: "🔵", - available: Boolean(env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET), - }, -] as const; - -export default async function ConnectionsPage() { - const t = await getTranslations("pages.connections"); - const session = await auth(); - if (!session?.user?.id) redirect("/login"); - - const id = Number(session.user.id); - - // social_accounts is a CMS-only table that may not exist in every install - // (it has no bundled migration). Fall back to "nothing linked" on any error so - // the page still renders the generic connect buttons. - let linked: Set = new Set(); - let lookupFailed = false; - try { - const rows = await prisma.socialAccounts.findMany({ - where: { userId: BigInt(id) }, - select: { provider: true }, - }); - linked = new Set(rows.map((r) => r.provider.toLowerCase())); - } catch { - lookupFailed = true; - } - - // After connecting/erroring, NextAuth bounces back here so we land on a known page. - const callbackUrl = "/settings/connections"; - - return ( -
-

- {t("backToSettings")} -

- - -

- {t("matchByEmail")} {session.user.name}. -

- - {lookupFailed ? ( -

- {t("lookupFailed")} -

- ) : null} -
- -
- {PROVIDERS.map((p) => { - const isLinked = linked.has(p.key); - return ( - - {isLinked ? ( - - {t("connected")} - - ) : p.available ? ( - // Plain link into NextAuth's built-in sign-in handler. Re-using - // the same OAuth flow as /login binds the provider to the - // matching hotel account (see auth.ts signIn callback). - - {t("connectProvider", { provider: p.label })} - - ) : ( - - {t("unavailable")} - - )} - - ); - })} -
- -

- {t("footerNote")} -

-
- ); -} diff --git a/src/app/(site)/settings/page.tsx b/src/app/(site)/settings/page.tsx index c22d13ad..27eccd51 100644 --- a/src/app/(site)/settings/page.tsx +++ b/src/app/(site)/settings/page.tsx @@ -127,19 +127,7 @@ export default async function SettingsPage() { - -

- {t("connectionsDescription")} -

- - {t("manageConnections")} - -
-
+
); } diff --git a/src/app/(site)/verify/page.tsx b/src/app/(site)/verify/page.tsx index 3cf3fba9..f771802b 100644 --- a/src/app/(site)/verify/page.tsx +++ b/src/app/(site)/verify/page.tsx @@ -1,14 +1,12 @@ import Link from "next/link"; import { getTranslations } from "next-intl/server"; import { isValidVerificationToken } from "@/actions/email-verify"; -import { DiscordVerifyForm } from "@/components/auth/discord-verify-form"; import { ContentCard, EmptyState } from "@/components/public/ui"; -import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; -type Status = "verified" | "already" | "invalid" | "unavailable" | "discord"; +type Status = "verified" | "already" | "invalid" | "unavailable"; export default async function VerifyPage({ searchParams, @@ -16,36 +14,15 @@ export default async function VerifyPage({ searchParams: Promise<{ token?: string; email?: string; - method?: string; - linked?: string; }>; }) { const t = await getTranslations("pages.verify"); - const { - token = "", - email = "", - method = "", - linked = "", - } = await searchParams; + const { token = "", email = "" } = await searchParams; const normalisedEmail = email.trim().toLowerCase(); let status: Status = "invalid"; - let discordAlreadyLinked = false; - if (method === "discord" || linked === "1") { - status = "discord"; - const session = await auth(); - if (session?.user?.id) { - const userId = Number(session.user.id); - try { - const linkedRow = await prisma.socialAccounts.findFirst({ - where: { userId: BigInt(userId), provider: "discord" }, - select: { id: true }, - }); - discordAlreadyLinked = !!linkedRow; - } catch {} - } - } else if (normalisedEmail && token) { + if (normalisedEmail && token) { const ok = await isValidVerificationToken(normalisedEmail, token); if (ok) { try { @@ -128,44 +105,6 @@ export default async function VerifyPage({
)} - - {status === "discord" && ( - - {linked === "1" && ( -
-

Gelinkt!

-

- Je Discord account is gekoppeld. Je kunt nu verder. -

-
- )} - {discordAlreadyLinked ? ( -
-

Al geverifieerd!

-

- Je Discord account is al gekoppeld aan dit account. -

-
- ) : ( - - )} -
- - Naar home - -
-
- )} ); } diff --git a/src/components/auth/discord-verify-form.tsx b/src/components/auth/discord-verify-form.tsx deleted file mode 100644 index 02a3c745..00000000 --- a/src/components/auth/discord-verify-form.tsx +++ /dev/null @@ -1,94 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { linkDiscordId } from "@/actions/link-discord"; - -export function DiscordVerifyForm() { - const [discordId, setDiscordId] = useState(""); - const [error, setError] = useState(null); - const [isPending, setIsPending] = useState(false); - const [success, setSuccess] = useState(false); - - async function handleSubmit(e: React.FormEvent) { - e.preventDefault(); - setError(null); - setSuccess(false); - setIsPending(true); - try { - const result = await linkDiscordId(discordId); - if (result === null) { - setSuccess(true); - } else { - setError(result); - } - } catch { - setError("Er is een fout opgetreden"); - } finally { - setIsPending(false); - } - } - - if (success) { - return ( -
-

Geverifieerd!

-

- Je Discord account is gekoppeld en je account is geverifieerd. -

-
- ); - } - - return ( -
- {error && ( -
- {error} -
- )} - -

- Open Discord, ga naar{" "} - Instellingen → Geavanceerd → Ontwikkelaarsmodus (aan). - Klik met rechts op je eigen naam en kies ID kopiëren. - Plak dat hier: -

- -
- setDiscordId(e.target.value)} - className="flex-1 focus:ring-0 border-4 rounded text-sm px-3 py-2" - style={{ - backgroundColor: "var(--color-background)", - color: "var(--color-text-readable, var(--color-text))", - borderColor: - "color-mix(in srgb, var(--color-text-muted) 25%, transparent)", - }} - required - /> - -
-
- ); -} diff --git a/src/components/auth/login-form.tsx b/src/components/auth/login-form.tsx index 2ec30fb3..5ffc53f0 100644 --- a/src/components/auth/login-form.tsx +++ b/src/components/auth/login-form.tsx @@ -167,52 +167,7 @@ export function LoginForm({ - {!needs2fa && ( - <> -
- - - {t("or")} - - -
-
- - -
- - )} +

-

- Geen e-mail? Je kunt later via Discord verifiëren. -

+
diff --git a/src/env.ts b/src/env.ts index c635a8b6..610276ff 100644 --- a/src/env.ts +++ b/src/env.ts @@ -39,11 +39,7 @@ const schema = z.object({ AUTH_SECRET: z.string().min(1).optional(), // Laravel APP_KEY (base64:...) — needed to read existing 2FA secrets. APP_KEY: z.string().optional(), - // Optional OAuth providers (enabled only when both id+secret are set). - DISCORD_CLIENT_ID: z.string().optional(), - DISCORD_CLIENT_SECRET: z.string().optional(), - GOOGLE_CLIENT_ID: z.string().optional(), - GOOGLE_CLIENT_SECRET: z.string().optional(), + // Mirrors Laravel config('habbo.site.convert_passwords') — enables md5->argon2id. CONVERT_PASSWORDS: z .string() diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 850b229a..1d6100de 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -1,7 +1,5 @@ import NextAuth from "next-auth"; import Credentials from "next-auth/providers/credentials"; -import Discord from "next-auth/providers/discord"; -import Google from "next-auth/providers/google"; import { env } from "@/env"; import { LaravelEncrypter } from "@/lib/auth/laravel-encrypter"; import { getCachedJwtVersion } from "@/lib/auth/jwt-version-cache"; @@ -144,67 +142,8 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ }; }, }), - // OAuth providers — enabled only when both id + secret are configured. - ...(env.DISCORD_CLIENT_ID && env.DISCORD_CLIENT_SECRET - ? [ - Discord({ - clientId: env.DISCORD_CLIENT_ID, - clientSecret: env.DISCORD_CLIENT_SECRET, - }), - ] - : []), - ...(env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET - ? [ - Google({ - clientId: env.GOOGLE_CLIENT_ID, - clientSecret: env.GOOGLE_CLIENT_SECRET, - }), - ] - : []), ], callbacks: { - async signIn({ user, account }) { - if (account?.provider === "credentials") return true; - - const requireLink = await siteSettings.getBool( - "oauth_require_link", - false, - ); - - // Always allow explicitly linked accounts. - if (account?.provider === "discord" && account.providerAccountId) { - try { - const linked = await prisma.socialAccounts.findUnique({ - where: { - provider_providerId: { - provider: "discord", - providerId: account.providerAccountId, - }, - }, - select: { userId: true }, - }); - if (linked) return true; - } catch { - return "/login?error=Unavailable"; - } - } - - // Email-based binding: only allowed when oauth_require_link is disabled - // AND the matched account does NOT have 2FA enabled (account takeover guard). - if (!requireLink && user.email) { - try { - const dbUser = await prisma.user.findFirst({ - where: { mail: user.email, twoFactorConfirmedAt: null }, - select: { id: true }, - }); - if (dbUser) return true; - } catch { - return "/login?error=Unavailable"; - } - } - - return "/login?error=NoAccount"; - }, async jwt({ token, user, account }) { if (user) { token.jwtVersion = @@ -216,81 +155,10 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ if (user && account?.provider === "credentials") { token.rank = (user as { rank?: number }).rank; + token.sub = String((user as { id?: string }).id); return token; } - // OAuth account linking only when establishing a session — not on - // every subsequent request (avoids siteSettings + DB on each hit). - if (user || account) { - const requireLink = await siteSettings.getBool( - "oauth_require_link", - false, - ); - - // Try Discord ID via SocialAccounts (always allowed, even when requireLink is true). - if ( - !token.sub && - account?.provider === "discord" && - account.providerAccountId - ) { - try { - const linked = await prisma.socialAccounts.findUnique({ - where: { - provider_providerId: { - provider: "discord", - providerId: account.providerAccountId, - }, - }, - }); - if (linked) { - const dbUser = await prisma.user.findUnique({ - where: { id: Number(linked.userId) }, - select: { - id: true, - rank: true, - username: true, - websiteJwtVersion: true, - }, - }); - if (dbUser) { - token.sub = String(dbUser.id); - token.rank = dbUser.rank; - token.name = dbUser.username; - token.jwtVersion = dbUser.websiteJwtVersion; - token.jwtCheckedAt = Date.now(); - return token; - } - } - } catch { - // leave token as-is on lookup failure - } - } - - // Email-based binding: only when requireLink is off AND account has no 2FA. - if (!requireLink && user?.email && !token.sub) { - try { - const dbUser = await prisma.user.findFirst({ - where: { mail: user.email, twoFactorConfirmedAt: null }, - select: { - id: true, - rank: true, - username: true, - websiteJwtVersion: true, - }, - }); - if (dbUser) { - token.sub = String(dbUser.id); - token.rank = dbUser.rank; - token.name = dbUser.username; - token.jwtVersion = dbUser.websiteJwtVersion; - token.jwtCheckedAt = Date.now(); - } - } catch { - // leave token as-is on lookup failure - } - } - } - // Re-check jwt version at most once per minute (memory/Redis cached). if (token.sub && !token.invalid) { const lastCheck = diff --git a/src/messages/bg.json b/src/messages/bg.json index cf38476a..64e4dcb3 100644 --- a/src/messages/bg.json +++ b/src/messages/bg.json @@ -708,12 +708,7 @@ "securityTitle": "сигурност", "securitySubtitle": "Двуфакторна автентификация", "securityDescription": "Добавете втори слой на защита към вашия акаунт.", - "twoFactorLink": "Двуфакторна автентификация", - "connectionsTitle": "Свързани акаунти", - "connectionsSubtitle": "Влезте с едно кликване", - "connectionsDescription": "Свържете Discord или Google с хотелския си акаунт.", - "manageConnections": "Управление на връзките" - }, + "twoFactorLink": "Двуфакторна автентификация"}, "settings2fa": { "backToSettings": "← Настройки", "title": "Двуфакторна автентификация", @@ -735,20 +730,10 @@ "enableIntro": "Добавете втори слой на сигурност с приложение за удостоверяване.", "enable": "Активирайте 2FA" }, - "connections": { - "backToSettings": "← Настройки", "title": "Свързани акаунти", "subtitle": "Свържете социален акаунт, за да можете да влезете с едно щракване", - "matchByEmail": "Свързваме го с вашия хотелски акаунт по имейл, така че използвайте посочения адрес:", - "lookupFailed": "В момента не можахме да прочетем свързаните ви акаунти. Все още можете да се свържете по-долу — състоянието ви ще се покаже, след като стане налично.", - "statusUnavailable": "Не се предлага в този хотел.", - "statusConnected": "Свързан — влезте с този акаунт.", - "statusNotConnected": "Не е свързан.", "connected": "Свързан", - "connectProvider": "Свържете {provider}", "unavailable": "Недостъпен", - "footerNote": "Свързването ви отвежда до доставчика за упълномощаване и след това обратно тук. Ако имейлът на вашия социален акаунт не съвпада с хотелски акаунт, ще бъдете върнати на екрана за вход с бележка." - }, "login": { "title": "влезте", "subtitle": "Добре дошли отново — влезте, за да влезете в хотела.", @@ -760,8 +745,6 @@ "verify": "Проверете", "signIn": "влезте", "or": "или", - "continueWithDiscord": "Продължете с Discord", - "continueWithGoogle": "Продължете с Google", "noAccount": "Нямате акаунт?", "createOne": "Създайте такъв", "forgotPassword": "Забравена парола?", diff --git a/src/messages/cs.json b/src/messages/cs.json index 59e66031..a01bba38 100644 --- a/src/messages/cs.json +++ b/src/messages/cs.json @@ -708,12 +708,7 @@ "securityTitle": "Bezpečnost", "securitySubtitle": "Dvoufaktorová autentizace", "securityDescription": "Přidejte do svého účtu druhou vrstvu ochrany.", - "twoFactorLink": "Dvoufaktorová autentizace", - "connectionsTitle": "Propojené účty", - "connectionsSubtitle": "Přihlaste se jedním kliknutím", - "connectionsDescription": "Propojte Discord nebo Google se svým hotelovým účtem.", - "manageConnections": "Správa připojení" - }, + "twoFactorLink": "Dvoufaktorová autentizace"}, "settings2fa": { "backToSettings": "← Nastavení", "title": "Dvoufaktorová autentizace", @@ -735,20 +730,10 @@ "enableIntro": "Přidejte druhou vrstvu zabezpečení pomocí ověřovací aplikace.", "enable": "Povolit 2FA" }, - "connections": { - "backToSettings": "← Nastavení", "title": "Propojené účty", "subtitle": "Propojte sociální účet, abyste se mohli přihlásit jedním kliknutím", - "matchByEmail": "Přiřadíme jej k vašemu hotelovému účtu prostřednictvím e-mailu, použijte tedy uvedenou adresu:", - "lookupFailed": "Vaše propojené účty jsme teď nemohli přečíst. Stále se můžete připojit níže – váš stav se zobrazí, jakmile bude k dispozici.", - "statusUnavailable": "V tomto hotelu není k dispozici.", - "statusConnected": "Připojeno – přihlaste se pomocí tohoto účtu.", - "statusNotConnected": "Nepřipojeno.", "connected": "Připojeno", - "connectProvider": "Připojit {provider}", "unavailable": "Není k dispozici", - "footerNote": "Po připojení se dostanete k poskytovateli k autorizaci a poté zpět sem. Pokud e-mail vašeho účtu na sociální síti neodpovídá účtu hotelu, vrátíte se na přihlašovací obrazovku s poznámkou." - }, "login": { "title": "Přihlaste se", "subtitle": "Vítejte zpět – přihlaste se pro vstup do hotelu.", @@ -760,8 +745,6 @@ "verify": "Ověřte", "signIn": "Přihlaste se", "or": "nebo", - "continueWithDiscord": "Pokračujte s Discordem", - "continueWithGoogle": "Pokračujte s Googlem", "noAccount": "Žádný účet?", "createOne": "Vytvořte jeden", "forgotPassword": "Zapomněli jste heslo?", diff --git a/src/messages/da.json b/src/messages/da.json index f198cc74..a4b5d079 100644 --- a/src/messages/da.json +++ b/src/messages/da.json @@ -708,12 +708,7 @@ "securityTitle": "Sikkerhed", "securitySubtitle": "To-faktor autentificering", "securityDescription": "Tilføj et ekstra beskyttelseslag til din konto.", - "twoFactorLink": "To-faktor autentificering", - "connectionsTitle": "Tilknyttede konti", - "connectionsSubtitle": "Log ind med et enkelt klik", - "connectionsDescription": "Link Discord eller Google til din hotelkonto.", - "manageConnections": "Administrer forbindelser" - }, + "twoFactorLink": "To-faktor autentificering"}, "settings2fa": { "backToSettings": "← Indstillinger", "title": "To-faktor autentificering", @@ -735,20 +730,10 @@ "enableIntro": "Tilføj et ekstra sikkerhedslag med en godkendelsesapp.", "enable": "Aktiver 2FA" }, - "connections": { - "backToSettings": "← Indstillinger", "title": "Tilknyttede konti", "subtitle": "Link en social konto, så du kan logge ind med et enkelt klik", - "matchByEmail": "Vi matcher den til din hotelkonto via e-mail, så brug den registrerede adresse:", - "lookupFailed": "Vi kunne ikke læse dine linkede konti lige nu. Du kan stadig oprette forbindelse nedenfor - din status vises, når den er tilgængelig.", - "statusUnavailable": "Ikke tilgængelig på dette hotel.", - "statusConnected": "Forbundet — log ind med denne konto.", - "statusNotConnected": "Ikke forbundet.", "connected": "Forbundet", - "connectProvider": "Tilslut {provider}", "unavailable": "Ikke tilgængelig", - "footerNote": "Tilslutning fører dig til udbyderen for at godkende og derefter tilbage hertil. Hvis din sociale kontos e-mail ikke matcher en hotelkonto, vil du blive returneret til login-skærmen med en note." - }, "login": { "title": "Log ind", "subtitle": "Velkommen tilbage - log ind for at komme ind på hotellet.", @@ -760,8 +745,6 @@ "verify": "Bekræft", "signIn": "Log ind", "or": "eller", - "continueWithDiscord": "Fortsæt med Discord", - "continueWithGoogle": "Fortsæt med Google", "noAccount": "Ingen konto?", "createOne": "Opret en", "forgotPassword": "Glemt adgangskode?", diff --git a/src/messages/de.json b/src/messages/de.json index e034e3a7..85b22a83 100644 --- a/src/messages/de.json +++ b/src/messages/de.json @@ -663,12 +663,7 @@ "securityTitle": "Sicherheit", "securitySubtitle": "Zwei-Faktor-Authentifizierung", "securityDescription": "Füge deinem Konto eine zweite Sicherheitsebene hinzu.", - "twoFactorLink": "Zwei-Faktor-Authentifizierung", - "connectionsTitle": "Verbundene Konten", - "connectionsSubtitle": "Mit einem Klick anmelden", - "connectionsDescription": "Verbinde Discord oder Google mit deinem Hotelkonto.", - "manageConnections": "Verbindungen verwalten" - }, + "twoFactorLink": "Zwei-Faktor-Authentifizierung"}, "settings2fa": { "backToSettings": "← Einstellungen", "title": "Zwei-Faktor-Authentifizierung", @@ -690,20 +685,10 @@ "enableIntro": "Füge eine zweite Sicherheitsebene mit einer Authenticator-App hinzu.", "enable": "2FA aktivieren" }, - "connections": { - "backToSettings": "← Einstellungen", "title": "Verbundene Konten", "subtitle": "Verknüpfe ein Social-Media-Konto, damit du dich mit einem Klick anmelden kannst", - "matchByEmail": "Wir gleichen es mit deinem Hotelkonto per E-Mail ab. Verwende daher die hinterlegte Adresse:", - "lookupFailed": "Wir konnten deine verknüpften Konten momentan nicht auslesen. Du kannst dich unten trotzdem verbinden — dein Status wird angezeigt, sobald er verfügbar ist.", - "statusUnavailable": "In diesem Hotel nicht verfügbar.", - "statusConnected": "Verbunden — mit diesem Konto anmelden.", - "statusNotConnected": "Nicht verbunden.", "connected": "Verbunden", - "connectProvider": "{provider} verbinden", "unavailable": "Nicht verfügbar", - "footerNote": "Beim Verbinden wirst du zum Anbieter weitergeleitet, um zu autorisieren, und dann hierher zurückgebracht. Wenn die E-Mail deines Social-Media-Kontos nicht mit einem Hotelkonto übereinstimmt, wirst du mit einem Hinweis zum Anmeldebildschirm zurückgeleitet." - }, "login": { "title": "Anmelden", "subtitle": "Willkommen zurück — melde dich an, um das Hotel zu betreten.", @@ -715,8 +700,6 @@ "verify": "Verifizieren", "signIn": "Anmelden", "or": "oder", - "continueWithDiscord": "Weiter mit Discord", - "continueWithGoogle": "Weiter mit Google", "noAccount": "Noch kein Konto?", "createOne": "Konto erstellen", "forgotPassword": "Passwort vergessen?", diff --git a/src/messages/el.json b/src/messages/el.json index 2b295832..f9f9b822 100644 --- a/src/messages/el.json +++ b/src/messages/el.json @@ -708,12 +708,7 @@ "securityTitle": "Ασφάλεια", "securitySubtitle": "Έλεγχος ταυτότητας δύο παραγόντων", "securityDescription": "Προσθέστε ένα δεύτερο επίπεδο προστασίας στον λογαριασμό σας.", - "twoFactorLink": "Έλεγχος ταυτότητας δύο παραγόντων", - "connectionsTitle": "Συνδεδεμένοι λογαριασμοί", - "connectionsSubtitle": "Συνδεθείτε με ένα κλικ", - "connectionsDescription": "Συνδέστε το Discord ή το Google με τον λογαριασμό του ξενοδοχείου σας.", - "manageConnections": "Διαχειριστείτε τις συνδέσεις" - }, + "twoFactorLink": "Έλεγχος ταυτότητας δύο παραγόντων"}, "settings2fa": { "backToSettings": "← Ρυθμίσεις", "title": "Έλεγχος ταυτότητας δύο παραγόντων", @@ -735,20 +730,10 @@ "enableIntro": "Προσθέστε ένα δεύτερο επίπεδο ασφάλειας με μια εφαρμογή ελέγχου ταυτότητας.", "enable": "Ενεργοποίηση 2FA" }, - "connections": { - "backToSettings": "← Ρυθμίσεις", "title": "Συνδεδεμένοι λογαριασμοί", "subtitle": "Συνδέστε έναν λογαριασμό κοινωνικής δικτύωσης για να μπορείτε να συνδεθείτε με ένα κλικ", - "matchByEmail": "Το αντιστοιχίζουμε στον λογαριασμό του ξενοδοχείου σας μέσω e-mail, επομένως χρησιμοποιήστε τη διεύθυνση στο αρχείο:", - "lookupFailed": "Δεν μπορέσαμε να διαβάσουμε τους συνδεδεμένους λογαριασμούς σας αυτήν τη στιγμή. Μπορείτε ακόμα να συνδεθείτε παρακάτω — η κατάστασή σας θα εμφανιστεί μόλις είναι διαθέσιμη.", - "statusUnavailable": "Δεν είναι διαθέσιμο σε αυτό το ξενοδοχείο.", - "statusConnected": "Συνδεδεμένο — συνδεθείτε με αυτόν τον λογαριασμό.", - "statusNotConnected": "Δεν είναι συνδεδεμένο.", "connected": "Συνδεδεμένος", - "connectProvider": "Σύνδεση {provider}", "unavailable": "Μη διαθέσιμο", - "footerNote": "Η σύνδεση σάς μεταφέρει στον πάροχο για εξουσιοδότηση και μετά πάλι εδώ. Εάν το e-mail του λογαριασμού σας κοινωνικής δικτύωσης δεν ταιριάζει με έναν λογαριασμό ξενοδοχείου, θα επιστρέψετε στην οθόνη σύνδεσης με μια σημείωση." - }, "login": { "title": "Συνδεθείτε", "subtitle": "Καλώς ήρθατε πίσω — συνδεθείτε για να μπείτε στο ξενοδοχείο.", @@ -760,8 +745,6 @@ "verify": "Επαλήθευση", "signIn": "Συνδεθείτε", "or": "ή", - "continueWithDiscord": "Συνεχίστε με το Discord", - "continueWithGoogle": "Συνεχίστε με την Google", "noAccount": "Δεν υπάρχει λογαριασμός;", "createOne": "Δημιουργήστε ένα", "forgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης;", diff --git a/src/messages/en.json b/src/messages/en.json index 3a0217ef..36d3e0b1 100644 --- a/src/messages/en.json +++ b/src/messages/en.json @@ -862,12 +862,7 @@ "securityTitle": "Security", "securitySubtitle": "Two-factor authentication", "securityDescription": "Add a second layer of protection to your account.", - "twoFactorLink": "Two-factor authentication", - "connectionsTitle": "Connected accounts", - "connectionsSubtitle": "Sign in with one click", - "connectionsDescription": "Link Discord or Google to your hotel account.", - "manageConnections": "Manage connections" - }, + "twoFactorLink": "Two-factor authentication"}, "settings2fa": { "backToSettings": "← Settings", "title": "Two-factor authentication", @@ -889,20 +884,6 @@ "enableIntro": "Add a second layer of security with an authenticator app.", "enable": "Enable 2FA" }, - "connections": { - "backToSettings": "← Settings", - "title": "Connected accounts", - "subtitle": "Link a social account so you can sign in with one click", - "matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:", - "lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.", - "statusUnavailable": "Not available on this hotel.", - "statusConnected": "Connected — sign in with this account.", - "statusNotConnected": "Not connected.", - "connected": "Connected", - "connectProvider": "Connect {provider}", - "unavailable": "Unavailable", - "footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note." - }, "login": { "title": "Sign in", "subtitle": "Welcome back — log in to enter the hotel.", @@ -916,8 +897,6 @@ "verify": "Verify", "signIn": "Sign in", "or": "or", - "continueWithDiscord": "Continue with Discord", - "continueWithGoogle": "Continue with Google", "noAccount": "No account?", "createOne": "Create one", "forgotPassword": "Forgot password?", diff --git a/src/messages/es.json b/src/messages/es.json index bab405db..377a6b6b 100644 --- a/src/messages/es.json +++ b/src/messages/es.json @@ -663,12 +663,7 @@ "securityTitle": "Seguridad", "securitySubtitle": "Autenticación de dos factores", "securityDescription": "Añade una segunda capa de protección a tu cuenta.", - "twoFactorLink": "Autenticación de dos factores", - "connectionsTitle": "Cuentas conectadas", - "connectionsSubtitle": "Inicia sesión con un solo clic", - "connectionsDescription": "Vincula Discord o Google a tu cuenta del hotel.", - "manageConnections": "Gestionar conexiones" - }, + "twoFactorLink": "Autenticación de dos factores"}, "settings2fa": { "backToSettings": "← Configuración", "title": "Autenticación de dos factores", @@ -690,20 +685,10 @@ "enableIntro": "Añade una segunda capa de seguridad con una aplicación de autenticación.", "enable": "Activar 2FA" }, - "connections": { - "backToSettings": "← Configuración", "title": "Cuentas conectadas", "subtitle": "Vincula una cuenta social para iniciar sesión con un clic", - "matchByEmail": "La vinculamos a tu cuenta del hotel por correo electrónico, así que usa la dirección registrada:", - "lookupFailed": "No pudimos leer tus cuentas vinculadas ahora mismo. Aún puedes conectar abajo — tu estado se mostrará cuando esté disponible.", - "statusUnavailable": "No disponible en este hotel.", - "statusConnected": "Conectado — inicia sesión con esta cuenta.", - "statusNotConnected": "No conectado.", "connected": "Conectado", - "connectProvider": "Conectar {provider}", "unavailable": "No disponible", - "footerNote": "Conectar te lleva al proveedor para autorizar, y luego de vuelta aquí. Si el correo electrónico de tu cuenta social no coincide con una cuenta del hotel, serás redirigido a la pantalla de inicio de sesión con una nota." - }, "login": { "title": "Iniciar sesión", "subtitle": "Bienvenido de nuevo — inicia sesión para entrar al hotel.", @@ -715,8 +700,6 @@ "verify": "Verificar", "signIn": "Iniciar sesión", "or": "o", - "continueWithDiscord": "Continuar con Discord", - "continueWithGoogle": "Continuar con Google", "noAccount": "¿No tienes cuenta?", "createOne": "Crea una", "forgotPassword": "¿Olvidaste tu contraseña?", diff --git a/src/messages/fr.json b/src/messages/fr.json index f1b52481..e616b092 100644 --- a/src/messages/fr.json +++ b/src/messages/fr.json @@ -663,12 +663,7 @@ "securityTitle": "Sécurité", "securitySubtitle": "Authentification à deux facteurs", "securityDescription": "Ajoutez une deuxième couche de protection à votre compte.", - "twoFactorLink": "Authentification à deux facteurs", - "connectionsTitle": "Comptes connectés", - "connectionsSubtitle": "Connectez-vous en un clic", - "connectionsDescription": "Associez Discord ou Google à votre compte hôtel.", - "manageConnections": "Gérer les connexions" - }, + "twoFactorLink": "Authentification à deux facteurs"}, "settings2fa": { "backToSettings": "← Paramètres", "title": "Authentification à deux facteurs", @@ -690,20 +685,10 @@ "enableIntro": "Ajoutez une deuxième couche de sécurité avec une application d'authentification.", "enable": "Activer l'A2F" }, - "connections": { - "backToSettings": "← Paramètres", "title": "Comptes connectés", "subtitle": "Associez un compte social pour vous connecter en un clic", - "matchByEmail": "Nous le faisons correspondre à votre compte hôtel par e-mail, donc utilisez l'adresse enregistrée :", - "lookupFailed": "Nous n'avons pas pu lire vos comptes liés pour le moment. Vous pouvez toujours vous connecter ci-dessous — votre statut apparaîtra dès qu'il sera disponible.", - "statusUnavailable": "Non disponible sur cet hôtel.", - "statusConnected": "Connecté — connectez-vous avec ce compte.", - "statusNotConnected": "Non connecté.", "connected": "Connecté", - "connectProvider": "Connecter {provider}", "unavailable": "Indisponible", - "footerNote": "La connexion vous redirige vers le fournisseur pour autoriser, puis vous revient ici. Si l'e-mail de votre compte social ne correspond pas à un compte hôtel, vous serez redirigé vers l'écran de connexion avec une note." - }, "login": { "title": "Connexion", "subtitle": "Bon retour — connectez-vous pour entrer dans l'hôtel.", @@ -715,8 +700,6 @@ "verify": "Vérifier", "signIn": "Se connecter", "or": "ou", - "continueWithDiscord": "Continuer avec Discord", - "continueWithGoogle": "Continuer avec Google", "noAccount": "Pas de compte ?", "createOne": "Créer un compte", "forgotPassword": "Mot de passe oublié ?", diff --git a/src/messages/hr.json b/src/messages/hr.json index fb067ebd..0c2ef1de 100644 --- a/src/messages/hr.json +++ b/src/messages/hr.json @@ -708,12 +708,7 @@ "securityTitle": "Sigurnost", "securitySubtitle": "Dvofaktorska autentifikacija", "securityDescription": "Dodajte drugi sloj zaštite svom računu.", - "twoFactorLink": "Dvofaktorska autentifikacija", - "connectionsTitle": "Povezani računi", - "connectionsSubtitle": "Prijavite se jednim klikom", - "connectionsDescription": "Povežite Discord ili Google sa svojim hotelskim računom.", - "manageConnections": "Upravljanje vezama" - }, + "twoFactorLink": "Dvofaktorska autentifikacija"}, "settings2fa": { "backToSettings": "← Postavke", "title": "Dvofaktorska autentifikacija", @@ -735,20 +730,10 @@ "enableIntro": "Dodajte drugi sloj sigurnosti pomoću aplikacije za autentifikaciju.", "enable": "Omogućite 2FA" }, - "connections": { - "backToSettings": "← Postavke", "title": "Povezani računi", "subtitle": "Povežite društveni račun kako biste se mogli prijaviti jednim klikom", - "matchByEmail": "Spajamo je s vašim hotelskim računom putem e-pošte, stoga koristite adresu u evidenciji:", - "lookupFailed": "Trenutačno nismo mogli pročitati vaše povezane račune. I dalje se možete povezati u nastavku — vaš će se status prikazati kada bude dostupan.", - "statusUnavailable": "Nije dostupno u ovom hotelu.", - "statusConnected": "Povezano — prijavite se ovim računom.", - "statusNotConnected": "Nije povezano.", "connected": "Povezan", - "connectProvider": "Poveži {provider}", "unavailable": "Nedostupan", - "footerNote": "Povezivanje vas vodi do davatelja usluga za autorizaciju, a zatim natrag ovdje. Ako e-pošta vašeg računa na društvenoj mreži ne odgovara hotelskom računu, vratit ćete se na zaslon za prijavu s porukom." - }, "login": { "title": "Prijavite se", "subtitle": "Dobrodošli nazad — prijavite se za ulazak u hotel.", @@ -760,8 +745,6 @@ "verify": "Potvrdi", "signIn": "Prijavite se", "or": "ili", - "continueWithDiscord": "Nastavite s Discordom", - "continueWithGoogle": "Nastavite s Googleom", "noAccount": "Nemate račun?", "createOne": "Stvorite jedan", "forgotPassword": "Zaboravili ste lozinku?", diff --git a/src/messages/hu.json b/src/messages/hu.json index 81bb341a..d59776b9 100644 --- a/src/messages/hu.json +++ b/src/messages/hu.json @@ -708,12 +708,7 @@ "securityTitle": "Biztonság", "securitySubtitle": "Kéttényezős hitelesítés", "securityDescription": "Adjon hozzá egy második védelmi réteget fiókjához.", - "twoFactorLink": "Kéttényezős hitelesítés", - "connectionsTitle": "Kapcsolt fiókok", - "connectionsSubtitle": "Jelentkezzen be egyetlen kattintással", - "connectionsDescription": "Kapcsolja össze a Discordot vagy a Google-t szállodai fiókjával.", - "manageConnections": "Kapcsolatok kezelése" - }, + "twoFactorLink": "Kéttényezős hitelesítés"}, "settings2fa": { "backToSettings": "← Beállítások", "title": "Kéttényezős hitelesítés", @@ -735,20 +730,10 @@ "enableIntro": "Adjon hozzá egy második biztonsági réteget egy hitelesítő alkalmazással.", "enable": "2FA engedélyezése" }, - "connections": { - "backToSettings": "← Beállítások", "title": "Kapcsolt fiókok", "subtitle": "Kapcsoljon össze egy közösségi fiókot, hogy egyetlen kattintással bejelentkezhessen", - "matchByEmail": "E-mailben egyeztetjük szállodai fiókjával, ezért használja a fájlban szereplő címet:", - "lookupFailed": "Jelenleg nem tudtuk olvasni az összekapcsolt fiókokat. Az alábbiakban továbbra is csatlakozhat – állapota akkor jelenik meg, ha elérhető lesz.", - "statusUnavailable": "Nem elérhető ebben a szállodában.", - "statusConnected": "Csatlakozva – jelentkezzen be ezzel a fiókkal.", - "statusNotConnected": "Nincs csatlakoztatva.", "connected": "Csatlakozva", - "connectProvider": "Csatlakozás a következőhöz: {provider}", "unavailable": "Nem elérhető", - "footerNote": "A csatlakozás a szolgáltatóhoz viszi az engedélyezést, majd vissza ide. Ha közösségi fiókod e-mail-címe nem egyezik a szállodai fiókkal, akkor egy megjegyzéssel visszakerül a bejelentkezési képernyőre." - }, "login": { "title": "Jelentkezzen be", "subtitle": "Üdvözöljük újra – jelentkezzen be a szállodába való belépéshez.", @@ -760,8 +745,6 @@ "verify": "Ellenőrizze", "signIn": "Jelentkezzen be", "or": "vagy", - "continueWithDiscord": "Folytatás a Discorddal", - "continueWithGoogle": "Folytassa a Google-lal", "noAccount": "Nincs fiók?", "createOne": "Hozzon létre egyet", "forgotPassword": "Elfelejtetted a jelszavad?", diff --git a/src/messages/it.json b/src/messages/it.json index ef7082df..26d972d6 100644 --- a/src/messages/it.json +++ b/src/messages/it.json @@ -817,12 +817,7 @@ "securityTitle": "Sicurezza", "securitySubtitle": "Autenticazione a due fattori", "securityDescription": "Aggiungi un ulteriore livello di protezione al tuo account.", - "twoFactorLink": "Autenticazione a due fattori", - "connectionsTitle": "Account collegati", - "connectionsSubtitle": "Accedi con un clic", - "connectionsDescription": "Collega Discord o Google al tuo account dell'hotel.", - "manageConnections": "Gestisci collegamenti" - }, + "twoFactorLink": "Autenticazione a due fattori"}, "settings2fa": { "backToSettings": "← Impostazioni", "title": "Autenticazione a due fattori", @@ -844,20 +839,10 @@ "enableIntro": "Aggiungi un livello di sicurezza in più con un'app di autenticazione.", "enable": "Attiva 2FA" }, - "connections": { - "backToSettings": "← Impostazioni", "title": "Account collegati", "subtitle": "Collega un account social per poter accedere con un clic", - "matchByEmail": "Lo abbiniamo al tuo account dell'hotel tramite e-mail, quindi usa l'indirizzo registrato:", - "lookupFailed": "Al momento non riusciamo a leggere i tuoi account collegati. Puoi comunque collegarne uno qui sotto: lo stato verrà mostrato non appena disponibile.", - "statusUnavailable": "Non disponibile su questo hotel.", - "statusConnected": "Collegato — accedi con questo account.", - "statusNotConnected": "Non collegato.", "connected": "Collegato", - "connectProvider": "Collega {provider}", "unavailable": "Non disponibile", - "footerNote": "Il collegamento ti porta al provider per l'autorizzazione, poi ti riporta qui. Se l'e-mail del tuo account social non corrisponde a un account dell'hotel, verrai riportato alla schermata di accesso con una nota." - }, "login": { "title": "Accedi", "subtitle": "Bentornato — accedi per entrare nell'hotel.", @@ -869,8 +854,6 @@ "verify": "Verifica", "signIn": "Accedi", "or": "oppure", - "continueWithDiscord": "Continua con Discord", - "continueWithGoogle": "Continua con Google", "noAccount": "Non hai un account?", "createOne": "Creane uno", "forgotPassword": "Password dimenticata?", diff --git a/src/messages/nl.json b/src/messages/nl.json index 59569519..5c108f1b 100644 --- a/src/messages/nl.json +++ b/src/messages/nl.json @@ -862,12 +862,7 @@ "securityTitle": "Beveiliging", "securitySubtitle": "Twee factor authenticatie", "securityDescription": "Voeg een extra beveiligingslaag toe aan je account.", - "twoFactorLink": "Twee factor authenticatie", - "connectionsTitle": "Gekoppelde accounts", - "connectionsSubtitle": "Inloggen met één klik", - "connectionsDescription": "Koppel Discord of Google aan je hotelaccount.", - "manageConnections": "Koppelingen beheren" - }, + "twoFactorLink": "Twee factor authenticatie"}, "settings2fa": { "backToSettings": "← Instellingen", "title": "Twee factor authenticatie", @@ -889,20 +884,10 @@ "enableIntro": "Voeg een extra beveiligingslaag toe met een authenticator-app.", "enable": "2FA inschakelen" }, - "connections": { - "backToSettings": "← Instellingen", "title": "Gekoppelde accounts", "subtitle": "Koppel een sociaal account zodat je met één klik kunt inloggen", - "matchByEmail": "We koppelen het aan je hotelaccount op basis van e-mail, gebruik dus het volgende adres:", - "lookupFailed": "We konden je gekoppelde accounts nu niet uitlezen. Je kunt hieronder nog steeds koppelen — je status wordt getoond zodra deze beschikbaar is.", - "statusUnavailable": "Niet beschikbaar in dit hotel.", - "statusConnected": "Gekoppeld — log in met dit account.", - "statusNotConnected": "Niet gekoppeld.", "connected": "Gekoppeld", - "connectProvider": "{provider} koppelen", "unavailable": "Niet beschikbaar", - "footerNote": "Koppelen brengt je naar de provider om te autoriseren en daarna terug hierheen. Als het e-mailadres van je sociale account niet overeenkomt met een hotelaccount, word je teruggestuurd naar het inlogscherm met een melding." - }, "login": { "title": "Inloggen", "subtitle": "Welkom terug — log in om het hotel te betreden.", @@ -914,8 +899,6 @@ "verify": "Verifiëren", "signIn": "Inloggen", "or": "of", - "continueWithDiscord": "Doorgaan met Discord", - "continueWithGoogle": "Doorgaan met Google", "noAccount": "Nog geen account?", "createOne": "Account aanmaken", "forgotPassword": "Wachtwoord vergeten?", diff --git a/src/messages/no.json b/src/messages/no.json index 5d71317d..a40aa6da 100644 --- a/src/messages/no.json +++ b/src/messages/no.json @@ -708,12 +708,7 @@ "securityTitle": "Sikkerhet", "securitySubtitle": "To-faktor autentisering", "securityDescription": "Legg til et ekstra lag med beskyttelse til kontoen din.", - "twoFactorLink": "To-faktor autentisering", - "connectionsTitle": "Tilknyttede kontoer", - "connectionsSubtitle": "Logg på med ett klikk", - "connectionsDescription": "Koble Discord eller Google til hotellkontoen din.", - "manageConnections": "Administrer tilkoblinger" - }, + "twoFactorLink": "To-faktor autentisering"}, "settings2fa": { "backToSettings": "← Innstillinger", "title": "To-faktor autentisering", @@ -735,20 +730,10 @@ "enableIntro": "Legg til et ekstra lag med sikkerhet med en autentiseringsapp.", "enable": "Aktiver 2FA" }, - "connections": { - "backToSettings": "← Innstillinger", "title": "Tilknyttede kontoer", "subtitle": "Koble til en sosial konto slik at du kan logge på med ett klikk", - "matchByEmail": "Vi matcher den til hotellkontoen din via e-post, så bruk adressen som er registrert:", - "lookupFailed": "Vi kunne ikke lese de tilknyttede kontoene dine akkurat nå. Du kan fortsatt koble til nedenfor – statusen din vises når den er tilgjengelig.", - "statusUnavailable": "Ikke tilgjengelig på dette hotellet.", - "statusConnected": "Tilkoblet – logg på med denne kontoen.", - "statusNotConnected": "Ikke tilkoblet.", "connected": "Tilkoblet", - "connectProvider": "Koble til {provider}", "unavailable": "Utilgjengelig", - "footerNote": "Tilkobling tar deg til leverandøren for å godkjenne, og deretter tilbake hit. Hvis e-posten til den sosiale kontoen din ikke samsvarer med en hotellkonto, blir du returnert til påloggingsskjermen med en merknad." - }, "login": { "title": "Logg på", "subtitle": "Velkommen tilbake – logg inn for å komme inn på hotellet.", @@ -760,8 +745,6 @@ "verify": "Bekreft", "signIn": "Logg på", "or": "eller", - "continueWithDiscord": "Fortsett med Discord", - "continueWithGoogle": "Fortsett med Google", "noAccount": "Ingen konto?", "createOne": "Lag en", "forgotPassword": "Glemt passord?", diff --git a/src/messages/pl.json b/src/messages/pl.json index b71c4b0c..7a2730e2 100644 --- a/src/messages/pl.json +++ b/src/messages/pl.json @@ -708,12 +708,7 @@ "securityTitle": "Bezpieczeństwo", "securitySubtitle": "Uwierzytelnianie dwuskładnikowe", "securityDescription": "Dodaj drugą warstwę ochrony do swojego konta.", - "twoFactorLink": "Uwierzytelnianie dwuskładnikowe", - "connectionsTitle": "Połączone konta", - "connectionsSubtitle": "Zaloguj się jednym kliknięciem", - "connectionsDescription": "Połącz Discord lub Google ze swoim kontem hotelowym.", - "manageConnections": "Zarządzaj połączeniami" - }, + "twoFactorLink": "Uwierzytelnianie dwuskładnikowe"}, "settings2fa": { "backToSettings": "← Ustawienia", "title": "Uwierzytelnianie dwuskładnikowe", @@ -735,20 +730,10 @@ "enableIntro": "Dodaj drugą warstwę zabezpieczeń za pomocą aplikacji uwierzytelniającej.", "enable": "Włącz 2FA" }, - "connections": { - "backToSettings": "← Ustawienia", "title": "Połączone konta", "subtitle": "Połącz konto społecznościowe, aby móc zalogować się jednym kliknięciem", - "matchByEmail": "Dopasowujemy go do Twojego konta hotelowego przez e-mail, więc użyj adresu zapisanego w pliku:", - "lookupFailed": "Nie mogliśmy teraz odczytać Twoich połączonych kont. Nadal możesz się połączyć poniżej — Twój status wyświetli się, gdy będzie dostępny.", - "statusUnavailable": "Niedostępne w tym hotelu.", - "statusConnected": "Połączono — zaloguj się na to konto.", - "statusNotConnected": "Nie podłączony.", "connected": "Połączono", - "connectProvider": "Połącz {provider}", "unavailable": "Niedostępne", - "footerNote": "Po nawiązaniu połączenia przejdziesz do dostawcy w celu autoryzacji, a następnie wrócisz tutaj. Jeśli adres e-mail Twojego konta społecznościowego nie jest zgodny z kontem hotelowym, nastąpi powrót do ekranu logowania z notatką." - }, "login": { "title": "Zaloguj się", "subtitle": "Witamy ponownie — zaloguj się, aby wejść do hotelu.", @@ -760,8 +745,6 @@ "verify": "Zweryfikuj", "signIn": "Zaloguj się", "or": "lub", - "continueWithDiscord": "Kontynuuj z Discordem", - "continueWithGoogle": "Kontynuuj z Google", "noAccount": "Nie masz konta?", "createOne": "Utwórz jeden", "forgotPassword": "Zapomniałeś hasła?", diff --git a/src/messages/pt.json b/src/messages/pt.json index ace73388..b922cbdd 100644 --- a/src/messages/pt.json +++ b/src/messages/pt.json @@ -708,12 +708,7 @@ "securityTitle": "Segurança", "securitySubtitle": "Autenticação de dois fatores", "securityDescription": "Adicione uma segunda camada de proteção à sua conta.", - "twoFactorLink": "Autenticação de dois fatores", - "connectionsTitle": "Contas conectadas", - "connectionsSubtitle": "Faça login com um clique", - "connectionsDescription": "Vincule o Discord ou o Google à sua conta do hotel.", - "manageConnections": "Gerenciar conexões" - }, + "twoFactorLink": "Autenticação de dois fatores"}, "settings2fa": { "backToSettings": "← Configurações", "title": "Autenticação de dois fatores", @@ -735,20 +730,10 @@ "enableIntro": "Adicione uma segunda camada de segurança com um aplicativo autenticador.", "enable": "Habilitar 2FA" }, - "connections": { - "backToSettings": "← Configurações", "title": "Contas conectadas", "subtitle": "Vincule uma conta social para poder fazer login com um clique", - "matchByEmail": "Nós o associamos à sua conta do hotel por e-mail, então use o endereço registrado:", - "lookupFailed": "Não foi possível ler suas contas vinculadas no momento. Você ainda pode se conectar abaixo – seu status será exibido assim que estiver disponível.", - "statusUnavailable": "Não disponível neste hotel.", - "statusConnected": "Conectado – faça login com esta conta.", - "statusNotConnected": "Não conectado.", "connected": "Conectado", - "connectProvider": "Conectar {provider}", "unavailable": "Indisponível", - "footerNote": "A conexão leva você ao provedor para autorizar e depois volta aqui. Se o e-mail da sua conta social não corresponder à conta do hotel, você retornará à tela de login com uma nota." - }, "login": { "title": "Faça login", "subtitle": "Bem-vindo de volta – faça login para entrar no hotel.", @@ -760,8 +745,6 @@ "verify": "Verifique", "signIn": "Faça login", "or": "ou", - "continueWithDiscord": "Continuar com discórdia", - "continueWithGoogle": "Continuar com o Google", "noAccount": "Sem conta?", "createOne": "Crie um", "forgotPassword": "Esqueceu a senha?", diff --git a/src/messages/ro.json b/src/messages/ro.json index e96d0f10..89f164c1 100644 --- a/src/messages/ro.json +++ b/src/messages/ro.json @@ -708,12 +708,7 @@ "securityTitle": "Securitate", "securitySubtitle": "Autentificare cu doi factori", "securityDescription": "Adăugați un al doilea nivel de protecție contului dvs.", - "twoFactorLink": "Autentificare cu doi factori", - "connectionsTitle": "Conturi conectate", - "connectionsSubtitle": "Conectați-vă cu un singur clic", - "connectionsDescription": "Conectați Discord sau Google la contul dvs. de hotel.", - "manageConnections": "Gestionați conexiunile" - }, + "twoFactorLink": "Autentificare cu doi factori"}, "settings2fa": { "backToSettings": "← Setări", "title": "Autentificare cu doi factori", @@ -735,20 +730,10 @@ "enableIntro": "Adăugați un al doilea nivel de securitate cu o aplicație de autentificare.", "enable": "Activați 2FA" }, - "connections": { - "backToSettings": "← Setări", "title": "Conturi conectate", "subtitle": "Conectați un cont social pentru a vă putea conecta cu un singur clic", - "matchByEmail": "Îl potrivim prin e-mail cu contul dvs. de hotel, așa că utilizați adresa din dosar:", - "lookupFailed": "Nu am putut citi conturile dvs. conectate în acest moment. Vă puteți conecta în continuare mai jos — starea dvs. se va afișa odată ce va fi disponibil.", - "statusUnavailable": "Nu este disponibil la acest hotel.", - "statusConnected": "Conectat — conectați-vă cu acest cont.", - "statusNotConnected": "Nu este conectat.", "connected": "Conectat", - "connectProvider": "Conectați {provider}", "unavailable": "Indisponibil", - "footerNote": "Conectarea vă duce la furnizor pentru a autoriza, apoi înapoi aici. Dacă adresa de e-mail a contului dvs. social nu se potrivește cu un cont de hotel, veți fi returnat la ecranul de conectare cu o notă." - }, "login": { "title": "Conectați-vă", "subtitle": "Bine ați revenit - conectați-vă pentru a intra în hotel.", @@ -760,8 +745,6 @@ "verify": "Verificați", "signIn": "Conectați-vă", "or": "sau", - "continueWithDiscord": "Continuați cu Discord", - "continueWithGoogle": "Continuați cu Google", "noAccount": "Fără cont?", "createOne": "Creați unul", "forgotPassword": "Ai uitat parola?", diff --git a/src/messages/ru.json b/src/messages/ru.json index 7df5e2d6..a76c54e3 100644 --- a/src/messages/ru.json +++ b/src/messages/ru.json @@ -708,12 +708,7 @@ "securityTitle": "Безопасность", "securitySubtitle": "Двухфакторная аутентификация", "securityDescription": "Добавьте в аккаунт второй уровень защиты.", - "twoFactorLink": "Двухфакторная аутентификация", - "connectionsTitle": "Связанные аккаунты", - "connectionsSubtitle": "Войти одним щелчком мыши", - "connectionsDescription": "Привяжите Discord или Google к аккаунту отеля.", - "manageConnections": "Управление подключениями" - }, + "twoFactorLink": "Двухфакторная аутентификация"}, "settings2fa": { "backToSettings": "← Настройки", "title": "Двухфакторная аутентификация", @@ -735,20 +730,8 @@ "enableIntro": "Добавьте второй уровень безопасности с помощью приложения-аутентификатора.", "enable": "Включить 2FA" }, - "connections": { - "backToSettings": "← Настройки", "title": "Связанные аккаунты", "subtitle": "Привяжите аккаунт в соцсетях, чтобы войти в систему одним щелчком мыши", - "matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:", - "lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.", - "statusUnavailable": "Not available on this hotel.", - "statusConnected": "Connected — sign in with this account.", - "statusNotConnected": "Not connected.", - "connected": "Connected", - "connectProvider": "Connect {provider}", - "unavailable": "Unavailable", - "footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note." - }, "login": { "title": "Sign in", "subtitle": "С возвращением! Войдите в систему, чтобы войти в отель.", @@ -760,8 +743,6 @@ "verify": "Подтвердить", "signIn": "Войти", "or": "или", - "continueWithDiscord": "Продолжить с Discord", - "continueWithGoogle": "Продолжить с помощью Google", "noAccount": "Нет аккаунта?", "createOne": "Создать", "forgotPassword": "Забыли пароль?", diff --git a/src/messages/sk.json b/src/messages/sk.json index f8fd8f9b..4786fc32 100644 --- a/src/messages/sk.json +++ b/src/messages/sk.json @@ -708,12 +708,7 @@ "securityTitle": "Bezpečnosť", "securitySubtitle": "Dvojfaktorové overenie", "securityDescription": "Pridajte do svojho účtu druhú vrstvu ochrany.", - "twoFactorLink": "Dvojfaktorové overenie", - "connectionsTitle": "Prepojené účty", - "connectionsSubtitle": "Prihláste sa jedným kliknutím", - "connectionsDescription": "Prepojte Discord alebo Google so svojím hotelovým účtom.", - "manageConnections": "Spravujte pripojenia" - }, + "twoFactorLink": "Dvojfaktorové overenie"}, "settings2fa": { "backToSettings": "← Nastavenia", "title": "Dvojfaktorové overenie", @@ -735,20 +730,10 @@ "enableIntro": "Pridajte druhú vrstvu zabezpečenia pomocou autentifikačnej aplikácie.", "enable": "Povoliť 2FA" }, - "connections": { - "backToSettings": "← Nastavenia", "title": "Prepojené účty", "subtitle": "Prepojte sociálny účet, aby ste sa mohli prihlásiť jedným kliknutím", - "matchByEmail": "Priradíme ho k vášmu hotelovému účtu prostredníctvom e-mailu, takže použite evidovanú adresu:", - "lookupFailed": "Vaše prepojené účty sa nám momentálne nepodarilo prečítať. Stále sa môžete pripojiť nižšie – váš stav sa zobrazí, keď bude k dispozícii.", - "statusUnavailable": "Nie je k dispozícii v tomto hoteli.", - "statusConnected": "Pripojené – prihláste sa pomocou tohto účtu.", - "statusNotConnected": "Nepripojené.", "connected": "Pripojené", - "connectProvider": "Pripojiť {provider}", "unavailable": "nedostupné", - "footerNote": "Po pripojení sa dostanete k poskytovateľovi na autorizáciu a potom späť sem. Ak sa e-mail vášho účtu na sociálnej sieti nezhoduje s účtom hotela, vrátite sa na prihlasovaciu obrazovku s poznámkou." - }, "login": { "title": "Prihláste sa", "subtitle": "Vitajte späť — prihláste sa pre vstup do hotela.", @@ -760,8 +745,6 @@ "verify": "Overiť", "signIn": "Prihláste sa", "or": "alebo", - "continueWithDiscord": "Pokračujte s Discordom", - "continueWithGoogle": "Pokračujte so službou Google", "noAccount": "Žiadny účet?", "createOne": "Vytvorte si ho", "forgotPassword": "Zabudli ste heslo?", diff --git a/src/messages/sr.json b/src/messages/sr.json index d0cb753c..71a08d57 100644 --- a/src/messages/sr.json +++ b/src/messages/sr.json @@ -708,12 +708,7 @@ "securityTitle": "Безбедност", "securitySubtitle": "Two-factor authentication", "securityDescription": "Додајте други слој заштите свом налогу.", - "twoFactorLink": "Two-factor authentication", - "connectionsTitle": "Повезани налози", - "connectionsSubtitle": "Пријавите се једним кликом", - "connectionsDescription": "Link Discord or Google to your hotel account.", - "manageConnections": "Управљајте везама" - }, + "twoFactorLink": "Two-factor authentication"}, "settings2fa": { "backToSettings": "← Подешавања", "title": "Двофакторска аутентификација", @@ -735,20 +730,10 @@ "enableIntro": "Додајте други ниво безбедности помоћу апликације за аутентификацију.", "enable": "Омогући 2ФА" }, - "connections": { - "backToSettings": "← Подешавања", "title": "Повезани налози", "subtitle": "Повежите друштвени налог да бисте се могли пријавити једним кликом", - "matchByEmail": "Повезујемо га са вашим хотелским налогом путем е-поште, па користите адресу у евиденцији:", - "lookupFailed": "We couldn't read your linked accounts right now. Још увек можете да се повежете испод — ваш статус ће се приказати када буде доступан.", - "statusUnavailable": "Није доступно у овом хотелу.", - "statusConnected": "Повезано — пријавите се са овим налогом.", - "statusNotConnected": "Није повезан.", "connected": "Повезано", - "connectProvider": "Повежите {provider}", "unavailable": "Недоступно", - "footerNote": "Повезивање вас води до провајдера за ауторизацију, а затим назад овде. Ако се е-пошта вашег друштвеног налога не подудара са хотелским налогом, бићете враћени на екран за пријаву са напоменом." - }, "login": { "title": "Пријавите се", "subtitle": "Добродошли назад — пријавите се да бисте ушли у хотел.", @@ -760,8 +745,6 @@ "verify": "Верифи", "signIn": "Пријавите се", "or": "или", - "continueWithDiscord": "Наставите са Дисцорд-ом", - "continueWithGoogle": "Наставите са Гоогле-ом", "noAccount": "Немате налог?", "createOne": "Направите један", "forgotPassword": "Заборавили сте лозинку?", diff --git a/src/messages/sv.json b/src/messages/sv.json index b710520e..49ab693d 100644 --- a/src/messages/sv.json +++ b/src/messages/sv.json @@ -708,12 +708,7 @@ "securityTitle": "Säkerhet", "securitySubtitle": "Tvåfaktorsautentisering", "securityDescription": "Lägg till ett andra lager av skydd till ditt konto.", - "twoFactorLink": "Tvåfaktorsautentisering", - "connectionsTitle": "Anslutna konton", - "connectionsSubtitle": "Logga in med ett klick", - "connectionsDescription": "Länka Discord eller Google till ditt hotellkonto.", - "manageConnections": "Hantera anslutningar" - }, + "twoFactorLink": "Tvåfaktorsautentisering"}, "settings2fa": { "backToSettings": "← Inställningar", "title": "Tvåfaktorsautentisering", @@ -735,20 +730,10 @@ "enableIntro": "Lägg till ett andra lager av säkerhet med en autentiseringsapp.", "enable": "Aktivera 2FA" }, - "connections": { - "backToSettings": "← Inställningar", "title": "Anslutna konton", "subtitle": "Länka ett socialt konto så att du kan logga in med ett klick", - "matchByEmail": "Vi matchar det med ditt hotellkonto via e-post, så använd adressen i filen:", - "lookupFailed": "Vi kunde inte läsa dina länkade konton just nu. Du kan fortfarande ansluta nedan – din status visas när den är tillgänglig.", - "statusUnavailable": "Inte tillgängligt på detta hotell.", - "statusConnected": "Ansluten – logga in med det här kontot.", - "statusNotConnected": "Ej ansluten.", "connected": "Ansluten", - "connectProvider": "Anslut {provider}", "unavailable": "Ej tillgänglig", - "footerNote": "Anslutning tar dig till leverantören för att auktorisera och sedan tillbaka hit. Om ditt sociala kontos e-post inte stämmer överens med ett hotellkonto kommer du att återvända till inloggningsskärmen med en anteckning." - }, "login": { "title": "Logga in", "subtitle": "Välkommen tillbaka — logga in för att komma in på hotellet.", @@ -760,8 +745,6 @@ "verify": "Verifiera", "signIn": "Logga in", "or": "eller", - "continueWithDiscord": "Fortsätt med Discord", - "continueWithGoogle": "Fortsätt med Google", "noAccount": "Inget konto?", "createOne": "Skapa en", "forgotPassword": "Glömt lösenordet?", diff --git a/src/messages/tr.json b/src/messages/tr.json index ee3383b4..9a9ceae4 100644 --- a/src/messages/tr.json +++ b/src/messages/tr.json @@ -708,12 +708,7 @@ "securityTitle": "Güvenlik", "securitySubtitle": "İki faktörlü kimlik doğrulama", "securityDescription": "Hesabınıza ikinci bir koruma katmanı ekleyin.", - "twoFactorLink": "İki faktörlü kimlik doğrulama", - "connectionsTitle": "Bağlı hesaplar", - "connectionsSubtitle": "Tek tıklamayla oturum açın", - "connectionsDescription": "Discord veya Google'ı otel hesabınıza bağlayın.", - "manageConnections": "Bağlantıları yönet" - }, + "twoFactorLink": "İki faktörlü kimlik doğrulama"}, "settings2fa": { "backToSettings": "← Ayarlar", "title": "İki faktörlü kimlik doğrulama", @@ -735,20 +730,10 @@ "enableIntro": "Kimlik doğrulama uygulamasıyla ikinci bir güvenlik katmanı ekleyin.", "enable": "2FA'yı etkinleştir" }, - "connections": { - "backToSettings": "← Ayarlar", "title": "Bağlı hesaplar", "subtitle": "Tek tıklamayla oturum açabilmek için bir sosyal hesap bağlayın", - "matchByEmail": "Bunu e-posta yoluyla otel hesabınızla eşleştiriyoruz, bu nedenle kayıtlı adresi kullanın:", - "lookupFailed": "Bağlı hesaplarınızı şu anda okuyamıyoruz. Aşağıdan hâlâ bağlanabilirsiniz; durumunuz uygun olduğunda gösterilecektir.", - "statusUnavailable": "Bu otelde mevcut değil.", - "statusConnected": "Bağlandı — bu hesapla oturum açın.", - "statusNotConnected": "Bağlı değil.", "connected": "Bağlı", - "connectProvider": "{provider} bağlayın", "unavailable": "Kullanılamıyor", - "footerNote": "Bağlanmak sizi yetkilendirmek için sağlayıcıya götürür, ardından buraya geri döner. Sosyal hesabınızın e-postası bir otel hesabıyla eşleşmiyorsa bir notla giriş ekranına geri döneceksiniz." - }, "login": { "title": "Oturum aç", "subtitle": "Tekrar hoş geldiniz; otele girmek için oturum açın.", @@ -760,8 +745,6 @@ "verify": "Doğrula", "signIn": "Oturum aç", "or": "veya", - "continueWithDiscord": "Discord'a devam et", - "continueWithGoogle": "Google ile devam et", "noAccount": "Hesabın yok mu?", "createOne": "Bir tane oluştur", "forgotPassword": "Şifrenizi mi unuttunuz?", diff --git a/src/messages/uk.json b/src/messages/uk.json index f3dc85de..7c77b271 100644 --- a/src/messages/uk.json +++ b/src/messages/uk.json @@ -708,12 +708,7 @@ "securityTitle": "Безпека", "securitySubtitle": "Двофакторна аутентифікація", "securityDescription": "Додайте другий рівень захисту до свого облікового запису.", - "twoFactorLink": "Двофакторна аутентифікація", - "connectionsTitle": "Підключені облікові записи", - "connectionsSubtitle": "Увійдіть в один клік", - "connectionsDescription": "Прив’яжіть Discord або Google до свого облікового запису готелю.", - "manageConnections": "Керуйте підключеннями" - }, + "twoFactorLink": "Двофакторна аутентифікація"}, "settings2fa": { "backToSettings": "← Налаштування", "title": "Двофакторна аутентифікація", @@ -735,20 +730,10 @@ "enableIntro": "Додайте другий рівень безпеки за допомогою програми автентифікації.", "enable": "Увімкніть 2FA" }, - "connections": { - "backToSettings": "← Налаштування", "title": "Підключені облікові записи", "subtitle": "Зв’яжіть обліковий запис у соціальній мережі, щоб увійти одним клацанням миші", - "matchByEmail": "Ми зв’яжемо його з вашим обліковим записом готелю електронною поштою, тому використовуйте адресу в файлі:", - "lookupFailed": "Нам зараз не вдалося прочитати ваші зв’язані облікові записи. Ви все ще можете підключитися нижче — ваш статус з’явиться, коли він стане доступним.", - "statusUnavailable": "Недоступно в цьому готелі.", - "statusConnected": "Підключено — увійдіть за допомогою цього облікового запису.", - "statusNotConnected": "Не підключено.", "connected": "Підключено", - "connectProvider": "Підключити {provider}", "unavailable": "Недоступний", - "footerNote": "Після підключення ви перейдете до постачальника для авторизації, а потім повернетеся сюди. Якщо адреса електронної пошти вашого соціального облікового запису не збігається з обліковим записом готелю, ви повернетеся на екран входу з приміткою." - }, "login": { "title": "Увійдіть", "subtitle": "Ласкаво просимо назад — увійдіть, щоб увійти в готель.", @@ -760,8 +745,6 @@ "verify": "Підтвердити", "signIn": "Увійдіть", "or": "або", - "continueWithDiscord": "Продовжуйте з Discord", - "continueWithGoogle": "Продовжуйте з Google", "noAccount": "Немає облікового запису?", "createOne": "Створіть один", "forgotPassword": "Забули пароль?",