From fed8834146450903b869e4ca58f521405fd92076 Mon Sep 17 00:00:00 2001 From: "aton.xia" Date: Thu, 2 Feb 2023 16:10:58 +0800 Subject: [PATCH] fix: validate personal account --- .../src/pages/registered/RegisteredAccount.tsx | 15 ++++++++++----- .../src/shared/service/b2b/graphql/users.ts | 17 +++++++++++++++-- apps/storefront/src/shared/service/b2b/index.ts | 2 ++ .../src/shared/service/request/fetch.ts | 4 +++- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/apps/storefront/src/pages/registered/RegisteredAccount.tsx b/apps/storefront/src/pages/registered/RegisteredAccount.tsx index d5e8874d..290a2abe 100644 --- a/apps/storefront/src/pages/registered/RegisteredAccount.tsx +++ b/apps/storefront/src/pages/registered/RegisteredAccount.tsx @@ -29,6 +29,7 @@ import RegisteredStepButton from './component/RegisteredStepButton' import { checkUserEmail, + checkUserBCEmail, } from '@/shared/service/b2b' import { @@ -117,19 +118,23 @@ export default function RegisteredAccount(props: RegisteredAccountProps) { const emailName = contactInformation?.find((item: CustomFieldItems) => item.fieldId === 'field_email')?.name || 'email' const validateEmailValue = async (emailValue: string) => { + const isB2BUser = accountType === '1' + const fn = isB2BUser ? checkUserEmail : checkUserBCEmail + const key = isB2BUser ? 'userEmailCheck' : 'customerEmailCheck' + const { - userEmailCheck: { + [key]: { userType, userInfo: { - companyName, - }, + companyName = '', + } = {}, }, - }: CustomFieldItems = await checkUserEmail({ + }: CustomFieldItems = await fn({ email: emailValue, channelId: currentChannelId, }) - const isValid = [1].includes(userType) + const isValid = isB2BUser ? [1].includes(userType) : ![2].includes(userType) if (!isValid) { setErrorTips(b3Lang(emailError[userType], { diff --git a/apps/storefront/src/shared/service/b2b/graphql/users.ts b/apps/storefront/src/shared/service/b2b/graphql/users.ts index 0802134d..4596a5b6 100644 --- a/apps/storefront/src/shared/service/b2b/graphql/users.ts +++ b/apps/storefront/src/shared/service/b2b/graphql/users.ts @@ -65,7 +65,7 @@ const deleteUsersQl = (data: CustomFieldItems) => `mutation{ } }` -const checkUserBCEmail = (data: CustomFieldItems) => `{ +const checkUserB2BEmail = (data: CustomFieldItems) => `{ userEmailCheck ( email: "${data.email}" companyId: ${data.companyId || null} @@ -87,6 +87,16 @@ const checkUserBCEmail = (data: CustomFieldItems) => `{ } }` +const checkCustomerBCEmail = (data: CustomFieldItems) => `{ + customerEmailCheck ( + email: "${data.email}" + storeHash: "${storeHash}" + channelId: ${data.channelId || null} + ){ + userType, + } +}` + export const getUsers = (data: CustomFieldItems): CustomFieldItems => B3Request.graphqlB2B({ query: getUsersQl(data), }) @@ -100,5 +110,8 @@ export const deleteUsers = (data: CustomFieldItems): CustomFieldItems => B3Reque }) export const checkUserEmail = (data: CustomFieldItems): CustomFieldItems => B3Request.graphqlB2B({ - query: checkUserBCEmail(data), + query: checkUserB2BEmail(data), +}) +export const checkUserBCEmail = (data: CustomFieldItems): CustomFieldItems => B3Request.graphqlB2B({ + query: checkCustomerBCEmail(data), }) diff --git a/apps/storefront/src/shared/service/b2b/index.ts b/apps/storefront/src/shared/service/b2b/index.ts index 4112bee5..f16c25e2 100644 --- a/apps/storefront/src/shared/service/b2b/index.ts +++ b/apps/storefront/src/shared/service/b2b/index.ts @@ -75,6 +75,7 @@ import { addOrUpdateUsers, deleteUsers, checkUserEmail, + checkUserBCEmail, } from './graphql/users' import { @@ -147,4 +148,5 @@ export { updateB2BShoppingListsItem, deleteB2BShoppingListItem, checkUserEmail, + checkUserBCEmail, } diff --git a/apps/storefront/src/shared/service/request/fetch.ts b/apps/storefront/src/shared/service/request/fetch.ts index dc21347a..00fe24fe 100644 --- a/apps/storefront/src/shared/service/request/fetch.ts +++ b/apps/storefront/src/shared/service/request/fetch.ts @@ -13,7 +13,9 @@ function b3Fetch(path: string, init: any, type?: string, customMessage = false) return new Promise((resolve, reject) => { originFetch(path, init).then((res: Response) => (path.includes('current.jwt') ? res.text() : res.json())).then(async (res) => { if (res?.code === 500) { - reject(res.message) + const data = res?.data || {} + const message = data.errMsg || res.message || '' + reject(message) return } // jwt 15 minutes expected