Skip to content

Commit

Permalink
Updates types
Browse files Browse the repository at this point in the history
Signed-off-by: Mihovil Ilakovac <[email protected]>
  • Loading branch information
infomiho committed Aug 18, 2023
1 parent df44a08 commit bdac8a0
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ export function getSignupRoute({
const additionalFields = validateAndGetAdditionalFields(userFields);

const user = await createUser({
...additionalFields,
email: userFields.email,
password: userFields.password,
...additionalFields,
});

const verificationLink = await createEmailVerificationLink(user, clientRoute);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ export default handleRejection(async (req, res) => {
const additionalFields = validateAndGetAdditionalFields(userFields)

await createUser({
...additionalFields,
username: userFields.username,
password: userFields.password,
...additionalFields,
})

return res.json({ success: true })
Expand Down
22 changes: 16 additions & 6 deletions waspc/data/Generator/templates/server/src/auth/providers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,27 @@ export type InitData = {

export type RequestWithWasp = Request & { wasp?: { [key: string]: any } }

export function createDefineAdditionalSignupFieldsFn<AlreadyIncludedUserFields extends keyof User>() {
export function createDefineAdditionalSignupFieldsFn<
// Wasp already includes these fields in the signup process
ExistingFields extends keyof User,
PossibleAdditionalFields = Expand<
Partial<Omit<User, ExistingFields>>
>
>() {
return function defineFields(config: {
[key in keyof Partial<Omit<User, AlreadyIncludedUserFields>>]: FieldDefinition<Partial<Omit<User, AlreadyIncludedUserFields>>[key]>
[key in keyof PossibleAdditionalFields]: FieldDefinition<
PossibleAdditionalFields[key]
>
}) {
return config
}
}

type FieldDefinition<T> = {
get: (data: Partial<{
[key in keyof User]: unknown
}>) => T | undefined;
validate: (value: T | undefined) => void;
get: (
data: Partial<{
[key in keyof User]: unknown
}>
) => T | undefined
validate: (value: T | undefined) => void
}
6 changes: 4 additions & 2 deletions waspc/data/Generator/templates/server/src/auth/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ import { Email } from '../email/core/types.js';
{=& additionalSignupFieldsFn.importStatement =}
{=/ additionalSignupFieldsFn.isDefined =}


{=# additionalSignupFieldsFn.isDefined =}
const _waspAdditionalSignupFieldsConfig = {= additionalSignupFieldsFn.importIdentifier =}
{=/ additionalSignupFieldsFn.isDefined =}
{=^ additionalSignupFieldsFn.isDefined =}
const _waspAdditionalSignupFieldsConfig = {}
import { createDefineAdditionalSignupFieldsFn } from './providers/types.js'
const _waspAdditionalSignupFieldsConfig = {} as ReturnType<
ReturnType<typeof createDefineAdditionalSignupFieldsFn<never>>
>
{=/ additionalSignupFieldsFn.isDefined =}

type {= userEntityUpper =}Id = {= userEntityUpper =}['id']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { defineAdditionalSignupFields } from '@wasp/types/index.js'

export const fields = defineAdditionalSignupFields({
address: {
get: (data) => data.address,
get: (data) => data.address as string | undefined,
validate: (value) => {
if (!value || value.length < 5) {
throw new Error('Address is required')
Expand Down

0 comments on commit bdac8a0

Please sign in to comment.