fix: preserve invitations for admins with a family

This commit is contained in:
t.indorf
2026-10-10 07:26:25 +02:00
parent e6a30be579
commit e50a8c646b
3 changed files with 30 additions and 4 deletions
+1 -1
View File
@@ -466,7 +466,7 @@ export async function resendFamilyInvitationAction(
if (!(await rateLimit(`resend-invite:${session.user.kitaId}:${userId}`, 3, 3600)).allowed)
return { error: "Bitte versuche es später erneut." };
const recipient = await prisma.user.findFirst({
where: { id: userId, kitaId: session.user.kitaId, role: UserRole.ELTERN,
where: { id: userId, kitaId: session.user.kitaId, familyId: { not: null },
emailVerifiedAt: null, passwordHash: "", disabledAt: null },
select: { email: true },
});
+2 -3
View File
@@ -15,7 +15,7 @@ export async function queueFamilyInvitation(
invitedById: string,
) {
const user = await tx.user.findUniqueOrThrow({ where: { id: userId } });
if (!user.kitaId || !user.familyId || user.role !== "ELTERN" || user.emailVerifiedAt || user.passwordHash || user.disabledAt)
if (!user.kitaId || !user.familyId || user.emailVerifiedAt || user.passwordHash || user.disabledAt)
throw new Error("Dieses Konto benötigt keine Familieneinladung.");
const existing = await tx.invitation.findFirst({
where: {
@@ -99,7 +99,6 @@ export async function deliverFamilyInvitations(
user.emailVerifiedAt ||
user.disabledAt ||
user.passwordHash !== "" ||
user.role !== "ELTERN" ||
!token ||
token.identifier !== user.id ||
token.expires <= now
@@ -170,7 +169,7 @@ export async function resendFamilyInvitation(
where: { id: userId, kitaId, familyId: { not: null } },
});
if (!user) return { error: "Elternkonto wurde nicht gefunden." };
if (user.emailVerifiedAt || user.passwordHash || user.disabledAt || user.role !== "ELTERN")
if (user.emailVerifiedAt || user.passwordHash || user.disabledAt)
return { error: "Keine offene Einladung gefunden." };
if (expectedEmail && user.email !== expectedEmail)
return { error: "Die Einladung hat sich geändert. Bitte lade die Seite neu." };