Skip to content

Commit 8f27d1b

Browse files
authored
Fix match email validation (for closing account) (canada-ca#2954)
1 parent d343a93 commit 8f27d1b

File tree

5 files changed

+26
-24
lines changed

5 files changed

+26
-24
lines changed

frontend/src/admin/OrganizationInformation.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { FormField } from '../components/fields/FormField'
3131
import { LoadingMessage } from '../components/LoadingMessage'
3232
import { ErrorFallbackMessage } from '../components/ErrorFallbackMessage'
3333
import {
34-
getRequirment,
34+
getRequirement,
3535
schemaToValidation,
3636
} from '../utilities/fieldRequirements'
3737

@@ -194,12 +194,12 @@ export function OrganizationInformation({
194194
const org = data.findOrganizationBySlug
195195

196196
const updateOrgValidationSchema = schemaToValidation({
197-
acronymEN: getRequirment('acronym'),
198-
acronymFR: getRequirment('acronym'),
197+
acronymEN: getRequirement('acronym'),
198+
acronymFR: getRequirement('acronym'),
199199
})
200200

201201
const removeOrgValidationSchema = schemaToValidation({
202-
orgName: getRequirment('field').matches(
202+
orgName: getRequirement('field').matches(
203203
org.name,
204204
t`Organization name does not match.`,
205205
),

frontend/src/auth/SignInPage.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { LoadingMessage } from '../components/LoadingMessage'
2121
import { useUserVar } from '../utilities/userState'
2222
import { activate } from '../utilities/i18n.config'
2323
import {
24-
getRequirment,
24+
getRequirement,
2525
schemaToValidation,
2626
} from '../utilities/fieldRequirements'
2727
import { SIGN_IN } from '../graphql/mutations'
@@ -36,8 +36,8 @@ export default function SignInPage() {
3636
const { from } = location.state || { from: { pathname: '/' } }
3737

3838
const validationSchema = schemaToValidation({
39-
email: getRequirment('email'),
40-
password: getRequirment('passwordSignIn'),
39+
email: getRequirement('email'),
40+
password: getRequirement('passwordSignIn'),
4141
})
4242

4343
const [signIn, { loading }] = useMutation(SIGN_IN, {

frontend/src/createOrganization/CreateOrganizationPage.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { CreateOrganizationField } from '../components/fields/CreateOrganization
1919
import { InfoButton, InfoBox, InfoPanel } from '../components/InfoPanel'
2020
import { LoadingMessage } from '../components/LoadingMessage'
2121
import {
22-
getRequirment,
22+
getRequirement,
2323
schemaToValidation,
2424
} from '../utilities/fieldRequirements'
2525
import { CREATE_ORGANIZATION } from '../graphql/mutations'
@@ -33,8 +33,8 @@ export default function CreateOrganizationPage() {
3333
isVisible: false,
3434
})
3535

36-
const fieldRequirement = getRequirment('field')
37-
const acronymRequirement = getRequirment('acronym').required(
36+
const fieldRequirement = getRequirement('field')
37+
const acronymRequirement = getRequirement('acronym').required(
3838
i18n._(t`This field cannot be empty`),
3939
)
4040

frontend/src/user/UserPage.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,14 @@ export default function UserPage() {
232232
<Formik
233233
validateOnBlur={false}
234234
initialValues={{
235-
confirmEmail: '',
235+
matchEmail: '',
236236
}}
237237
initialTouched={{
238-
confirmEmail: true,
238+
matchEmail: true,
239239
}}
240-
validationSchema={createValidationSchema(['confirmEmail'])}
240+
validationSchema={createValidationSchema(['matchEmail'], {
241+
matches: userName,
242+
})}
241243
onSubmit={async () => {
242244
await closeAccount({})
243245
signOut()
@@ -265,7 +267,7 @@ export default function UserPage() {
265267
</Text>
266268

267269
<FormField
268-
name="confirmEmail"
270+
name="matchEmail"
269271
label={t`User Email`}
270272
placeholder={userName}
271273
/>

frontend/src/utilities/fieldRequirements.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ import {
77
string as stringProp,
88
} from 'prop-types'
99

10-
const getSchema = () => {
10+
const getSchema = (options) => {
1111
return {
1212
email: string()
1313
.required(i18n._(t`Email cannot be empty`))
1414
.email(i18n._(t`Invalid email`)),
15-
confirmEmail: string()
15+
matchEmail: string()
1616
.required(i18n._(t`Email cannot be empty`))
17-
.oneOf([ref('userName')], t`User email does not match`),
17+
.matches(options?.matches, t`User email does not match`),
1818
displayName: string().required(i18n._(t`Display name cannot be empty`)),
1919
password: string()
2020
.required(i18n._(t`Password cannot be empty`))
@@ -59,28 +59,28 @@ const getSchema = () => {
5959
}
6060
}
6161

62-
const filterSchema = (keyArray) => {
63-
const schema = getSchema()
62+
const filterSchema = (keyArray, options) => {
63+
const schema = getSchema(options)
6464

6565
return keyArray.reduce((selectedSchema, currentKey) => {
6666
selectedSchema[currentKey] = schema[currentKey]
6767
return selectedSchema
6868
}, {})
6969
}
7070

71-
export const getRequirment = (key) => {
72-
return getSchema()[key]
71+
export const getRequirement = (key, options) => {
72+
return getSchema(options)[key]
7373
}
7474

7575
export const schemaToValidation = (schema) => {
7676
return object().shape(schema)
7777
}
7878

79-
export const createValidationSchema = (keyArray) => {
80-
return schemaToValidation(filterSchema(keyArray))
79+
export const createValidationSchema = (keyArray, options) => {
80+
return schemaToValidation(filterSchema(keyArray, options))
8181
}
8282

83-
getRequirment.propTypes = {
83+
getRequirement.propTypes = {
8484
keyArray: stringProp.isRequired,
8585
}
8686

0 commit comments

Comments
 (0)