From 104d6d4589795c97f65cee9fa7aa1228f900ffb7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 1 Aug 2026 06:08:53 +0000 Subject: [PATCH] fix(RS+): depth:0 sem select parcial; form schema de convite separado Co-authored-by: Francisco Solla --- .../(campaign)/campanha/convite/[token]/formActions.ts | 4 ++-- .../campanha/redefinir-senha/ResetPasswordForm.tsx | 2 +- src/lib/schemas/invite.ts | 9 ++++++--- src/utilities/campaignAuth.ts | 4 +--- tests/int/campaignAuth.int.spec.ts | 8 -------- 5 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/app/(campaign)/campanha/convite/[token]/formActions.ts b/src/app/(campaign)/campanha/convite/[token]/formActions.ts index ccbaf84d..7904f7dd 100644 --- a/src/app/(campaign)/campanha/convite/[token]/formActions.ts +++ b/src/app/(campaign)/campanha/convite/[token]/formActions.ts @@ -12,7 +12,7 @@ import { requiredFormSecret, requiredFormText, } from '@/lib/formData' -import { campaignInviteAutofillSchema, campaignInviteLoginSchema } from '@/lib/schemas/invite' +import { campaignInviteAutofillSchema, campaignInviteLoginFormSchema } from '@/lib/schemas/invite' import { mapCampaignFormActionError, runCampaignFormAction, @@ -68,7 +68,7 @@ export const redeemCampaignInviteLoginFormAction = async ( formData: FormData, ): Promise => { try { - const input = campaignInviteLoginSchema.parse({ + const input = campaignInviteLoginFormSchema.parse({ token, ...profileFromForm(formData), password: requiredFormSecret(formData, 'password'), diff --git a/src/app/(campaign)/campanha/redefinir-senha/ResetPasswordForm.tsx b/src/app/(campaign)/campanha/redefinir-senha/ResetPasswordForm.tsx index ab6def46..327ae5f3 100644 --- a/src/app/(campaign)/campanha/redefinir-senha/ResetPasswordForm.tsx +++ b/src/app/(campaign)/campanha/redefinir-senha/ResetPasswordForm.tsx @@ -8,7 +8,7 @@ import { CampaignAuthCardHeader } from '@/components/campaign/auth/CampaignAuthC import { CampaignPasswordFields } from '@/components/campaign/auth/CampaignPasswordFields' import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' -import { Field, FieldError, FieldGroup } from '@/components/ui/field' +import { FieldError, FieldGroup } from '@/components/ui/field' import { Spinner } from '@/components/ui/Spinner' import type { CampaignFormActionState } from '@/utilities/campaignFormActionError' diff --git a/src/lib/schemas/invite.ts b/src/lib/schemas/invite.ts index a706593f..8cb9a701 100644 --- a/src/lib/schemas/invite.ts +++ b/src/lib/schemas/invite.ts @@ -36,11 +36,14 @@ export const campaignInviteAutofillSchema = campaignInviteProfileSchema.extend({ consentAccepted: z.boolean().optional(), }) -export const campaignInviteLoginSchema = campaignInviteProfileSchema +export const campaignInviteLoginSchema = campaignInviteProfileSchema.extend({ + password: campaignPasswordSchema, + consentAccepted: z.boolean().optional(), +}) + +export const campaignInviteLoginFormSchema = campaignInviteLoginSchema .extend({ - password: campaignPasswordSchema, passwordConfirmation: campaignPasswordSchema, - consentAccepted: z.boolean().optional(), }) .superRefine(refineMatchingPasswords) diff --git a/src/utilities/campaignAuth.ts b/src/utilities/campaignAuth.ts index 69bb9aee..16544333 100644 --- a/src/utilities/campaignAuth.ts +++ b/src/utilities/campaignAuth.ts @@ -16,7 +16,7 @@ type CampaignAuthPayload = Pick type CampaignCookiePayload = Pick export type AuthenticatedCampaignUser = CampaignUser & { email: string } -/** Gate reload — no `media` join; avatar stays a bare relationship id. */ +/** Gate reload fields — kept as documentation for future partial selects. */ export const CAMPAIGN_AUTH_GATE_SELECT = { id: true, name: true, @@ -108,7 +108,6 @@ export const authenticateCampaignToken = async ( collection: 'campaignUser', id: user.id, depth: 0, - select: CAMPAIGN_AUTH_GATE_SELECT, }) return { @@ -138,7 +137,6 @@ const readAuthenticatedCampaignUser = async ( collection: 'campaignUser', id: user.id, depth: 1, - select: CAMPAIGN_AUTH_GATE_SELECT, }) return { diff --git a/tests/int/campaignAuth.int.spec.ts b/tests/int/campaignAuth.int.spec.ts index 0b5ce036..c11affa7 100644 --- a/tests/int/campaignAuth.int.spec.ts +++ b/tests/int/campaignAuth.int.spec.ts @@ -181,14 +181,6 @@ describe('campaign authentication foundation', () => { collection: 'campaignUser', id: staleJwtUser.id, depth: 0, - select: expect.objectContaining({ - id: true, - name: true, - role: true, - email: true, - username: true, - avatar: true, - }), }) expect(result?.email).toBe('') expect(result?.role).toBe('advisor')