© 2026 Hedgehog Software, LLC
fullname
const emailDataSchema = z.object({ email: z.string(), fullname: z.string(), }) export const getEmailUserFields = defineUserSignupFields({ email: data => { const emailData = emailDataSchema.parse(data) return emailData.email }, username: data => { const emailData = emailDataSchema.parse(data) return emailData.email }, isAdmin: data => { const emailData = emailDataSchema.parse(data) return adminEmails.includes(emailData.email) }, fullname: data => { const emailData = emailDataSchema.parse(data) return emailData.fullname }, })
const signupSchema = z .object({ fullname: z.string().min(1, 'Name is required'), email: z .string() .min(1, 'Email is required') .email('Please enter a valid email'), password: z .string() .min(1, 'Password is required') .min(8, 'Password must be at least 8 characters'), confirmPassword: z.string().min(1, 'Please confirm your password'), }) .refine(data => data.password === data.confirmPassword, { message: 'Passwords do not match', path: ['confirmPassword'], }) export function Signup() { const [showLinkSentView, setShowLinkSentView] = useState<boolean>(false) const [signupError, setSignupError] = useState<Error | null>(null) const { formData, errors, isSubmitting, showPassword, changeShowPassword, handleInputChange, handleSubmit, } = useFormHandler(signupSchema, async data => { setSignupError(null) try { await signup({ email: data.email, password: data.password }) setShowLinkSentView(true) } catch (error: unknown) { setSignupError(error as Error) } })
.wasp/out/sdk/wasp/dist/auth/email/actions/signup.d.ts
Join the Discord to ask follow-up questions and connect with the community
Rails-like framework for React, Node.js and Prisma. Build your app in a day and deploy it with a single CLI command.
4,603 Members