feat: persist portal invitation locales

This commit is contained in:
poyrazavsever
2026-07-19 03:07:35 +03:00
parent c1c473469a
commit 0158f2f25a
10 changed files with 249 additions and 46 deletions
+14 -8
View File
@@ -1,10 +1,20 @@
"use server";
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import {
acceptPortalInvitation,
getPortalInvitationPreview,
PortalInvitationError,
} from "@/server/auth/invitations";
import { buildLocaleCookie } from "@/server/i18n/locale";
function inviteErrorCode(error: unknown): string {
if (!(error instanceof PortalInvitationError)) return "auth.messages.portalInviteFailed";
if (error.code === "INVITATION_EXPIRED") return "auth.invite.expired";
if (error.code === "INVITATION_NOT_PENDING") return "auth.invite.accepted";
return "auth.messages.portalInviteFailed";
}
export async function acceptInvitation(formData: FormData) {
const token = String(formData.get("token") ?? "");
@@ -14,14 +24,10 @@ export async function acceptInvitation(formData: FormData) {
try {
await acceptPortalInvitation({ token, displayName, password });
} catch (error) {
const message =
error instanceof PortalInvitationError
? error.message
: "Portal hesabı oluşturulamadı.";
redirect(`/invite/${encodeURIComponent(token)}?error=true&message=${encodeURIComponent(message)}`);
redirect(`/invite/${encodeURIComponent(token)}?error=true&code=${inviteErrorCode(error)}`);
}
redirect(
`/login?message=${encodeURIComponent("Portal hesabın oluşturuldu. Şimdi giriş yapabilirsin.")}`,
);
const locale = getPortalInvitationPreview(token)?.locale ?? "tr";
(await cookies()).set(buildLocaleCookie(locale));
redirect("/login?code=auth.invite.success");
}