fix(RS+): depth:0 sem select parcial; form schema de convite separado

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-08-01 06:08:53 +00:00
parent 7484aab28a
commit 104d6d4589
No known key found for this signature in database
5 changed files with 10 additions and 17 deletions

View file

@ -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<CampaignInviteFormState> => {
try {
const input = campaignInviteLoginSchema.parse({
const input = campaignInviteLoginFormSchema.parse({
token,
...profileFromForm(formData),
password: requiredFormSecret(formData, 'password'),

View file

@ -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'

View file

@ -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)

View file

@ -16,7 +16,7 @@ type CampaignAuthPayload = Pick<Payload, 'auth' | 'findByID'>
type CampaignCookiePayload = Pick<Payload, 'secret'>
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 {

View file

@ -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')