storemw-core-api 1.0.145 → 1.0.147
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/auth_token/authTokenRegistry.js +1 -1
- package/dist/features/auth_token/authTokenRegistry.js.map +1 -1
- package/dist/features/auth_token/authTokenType.d.ts +3 -2
- package/dist/features/auth_token/authTokenType.js.map +1 -1
- package/dist/features/core_config/coreConfigType.js.map +1 -1
- package/dist/features/file_storage/fileStorageType.d.ts +4 -3
- package/dist/features/file_storage/fileStorageType.js.map +1 -1
- package/dist/features/index.d.ts +3 -0
- package/dist/features/index.js +5 -1
- package/dist/features/index.js.map +1 -1
- package/dist/features/reset_password/resetPasswordType.d.ts +7 -6
- package/dist/features/reset_password/resetPasswordType.js.map +1 -1
- package/dist/features/smtp_email/smtpEmailType.d.ts +7 -6
- package/dist/features/smtp_email/smtpEmailType.js.map +1 -1
- package/dist/features/user_me/userMeRegister.d.ts +5 -0
- package/dist/features/user_me/userMeRegister.js +11 -0
- package/dist/features/user_me/userMeRegister.js.map +1 -0
- package/dist/features/user_me/userMeRegistry.d.ts +2 -0
- package/dist/features/user_me/userMeRegistry.js +14 -0
- package/dist/features/user_me/userMeRegistry.js.map +1 -0
- package/dist/features/user_me/userMeType.d.ts +9 -0
- package/dist/features/user_me/userMeType.js +3 -0
- package/dist/features/user_me/userMeType.js.map +1 -0
- package/dist/services/access_control/AccessControlService.js +2 -2
- package/dist/services/access_control/AccessControlService.js.map +1 -1
- package/dist/services/auth/AuthService.js +17 -2
- package/dist/services/auth/AuthService.js.map +1 -1
- package/dist/services/file/FileService.js +56 -50
- package/dist/services/file/FileService.js.map +1 -1
- package/dist/services/gateway/SmtpEmailService.js +12 -6
- package/dist/services/gateway/SmtpEmailService.js.map +1 -1
- package/dist/services/reset_password/ResetPasswordService.js +18 -12
- package/dist/services/reset_password/ResetPasswordService.js.map +1 -1
- package/dist/services/user/UserMeService.js +33 -211
- package/dist/services/user/UserMeService.js.map +1 -1
- package/dist/utils/featureUtils.d.ts +5 -0
- package/dist/utils/featureUtils.js +3 -0
- package/dist/utils/featureUtils.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/serviceUtils.d.ts +2 -18
- package/dist/utils/serviceUtils.js +0 -1
- package/dist/utils/serviceUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResetPasswordService.js","sourceRoot":"","sources":["../../../src/services/reset_password/ResetPasswordService.ts"],"names":[],"mappings":"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","sourcesContent":["import { DefaultServiceProps, validateFormatEmailAddress, validateFormatMobileNumber, throwError } from \"@/utils\";\n\n// import { QueryList, QueryGet } from \"@/schema/common\";\n\n// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { dayjs } from \"@/utils\";\n\nimport { ModelAccountFields, ModelOneTimeCodeFields, ModelUserFields } from \"@/models\";\nimport { UserService, AccountService, OneTimeCodeService, OneTimeCodeType, OneTimeCodeCreateProps, oneTimeCodeStatus, oneTimeCodePurposeTypes, AccountListProps } from \"@/services\"\n\nimport { ResetPasswordHook } from \"@/features\"\n\nexport const resetPasswordMethods = {\n email: \"email\",\n sms: \"sms\",\n whatapps: \"whatapps\",\n} as const\n\nexport type ResetPasswordMethod = typeof resetPasswordMethods[keyof typeof resetPasswordMethods]\n\nexport type ResetPasswordServiceProps = DefaultServiceProps & {\n};\n\ntype defaultResetPasswordProps = {\n isOperator: boolean\n accountId: string\n accountCode: string\n}\n\nexport type ResetPasswordRequestProps = {\n data: defaultResetPasswordProps & {\n emailAddress?: string\n mobileNumber?: string\n }\n}\n\nexport type ResetPasswordValidateCodeProps = {\n data: defaultResetPasswordProps & {\n oneTimeCode: string\n }\n}\n\nexport type ResetPasswordPerformProps = {\n data: defaultResetPasswordProps & {\n oneTimeCode: string\n newPassword: string\n }\n}\n\nexport const ResetPasswordService = (props: ResetPasswordServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const globalAccountService = AccountService({ ...rest, isOperator: true })\n\n const validateAccount = async ({ accountId, accountCode }: {\n accountId: string,\n accountCode: string\n }) => {\n\n if (!accountId && !accountCode) {\n throwError(`AccountId or AccountCode is required`)\n }\n\n let filters: AccountListProps[\"filters\"] = []\n\n if (accountId !== \"\") {\n filters = [{\n field: `${ModelAccountFields.account_id}`,\n operator: \"=\",\n value: `${accountId}`\n }]\n }\n\n if (accountCode !== \"\") {\n filters = [{\n field: `${ModelAccountFields.account_code}`,\n operator: \"=\",\n value: `${accountCode}`\n }]\n }\n\n const { data: dataAccounts } = await globalAccountService.listAccounts({\n limit: 1,\n offset: 0,\n filters,\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n const dataAccount = dataAccounts.length > 0 ? dataAccounts[0] : {}\n\n if (!dataAccount?.account_id) {\n throwError(`Unable to retrieve account`)\n }\n\n return {\n accountId: dataAccount?.account_id ?? \"\",\n accountCode: dataAccount?.account_code ?? \"\"\n }\n\n }\n\n // get the user by email (non operator)\n const getUserByEmailNonOperator = async (\n accountId: ResetPasswordRequestProps[\"data\"][\"accountId\"],\n emailAddress: ResetPasswordRequestProps[\"data\"][\"emailAddress\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: Number(accountId), // need to override the account id,\n isOperator: false,\n userType: \"administrator\"\n })\n\n // get the user by email\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelUserFields.email}`,\n operator: \"=\",\n value: `${emailAddress}`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n }\n\n // get the user by email (operator)\n const getUserByEmailOperator = async (\n emailAddress: ResetPasswordRequestProps[\"data\"][\"emailAddress\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: 0, // not important\n isOperator: true,\n userType: \"operator\"\n })\n\n // get the user by email\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelUserFields.email}`,\n operator: \"=\",\n value: `${emailAddress}`\n },\n {\n field: `${ModelUserFields.user_type}`,\n operator: \"=\",\n value: `operator`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n // skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n }\n\n // get the user by mobile (non operator)\n const getUserByMobileNonOperator = async (\n accountId: ResetPasswordRequestProps[\"data\"][\"accountId\"],\n mobileNumber: ResetPasswordRequestProps[\"data\"][\"mobileNumber\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: Number(accountId), // need to override the account id,\n isOperator: false,\n userType: \"administrator\"\n })\n\n // get the user by contact\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `contact`,\n operator: \"=\",\n value: `${mobileNumber}`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n\n }\n\n // get the user by mobile (operator)\n const getUserByMobileOperator = async (\n mobileNumber: ResetPasswordRequestProps[\"data\"][\"mobileNumber\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: 0, // not important\n isOperator: true,\n userType: \"operator\"\n })\n\n // get the user by contact\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `contact`,\n operator: \"=\",\n value: `${mobileNumber}`\n },\n {\n field: `${ModelUserFields.user_type}`,\n operator: \"=\",\n value: `operator`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n\n }\n\n const requestResetPassword = async ({ data }: ResetPasswordRequestProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n }\n\n // get the onSetup from hook\n const hookSetup = ResetPasswordHook.onSetup()\n\n const codeType: OneTimeCodeType = hookSetup.oneTimeCodeType\n const resetPasswordMethod: ResetPasswordMethod = hookSetup.resetPasswordMethod\n const emailAddress = data?.emailAddress ?? \"\"\n const mobileNumber = data?.mobileNumber ?? \"\"\n\n let user: any = {}\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n if (!resetPasswordMethod) {\n throw new Error(`Invalid reset password method: ${hookSetup?.resetPasswordMethod ?? \"\"}`);\n }\n\n if (resetPasswordMethod === \"email\") {\n if (validateFormatEmailAddress(emailAddress) === false) {\n throw new Error(`Invalid email address: ${emailAddress}`);\n }\n\n // get the user by email\n user = isOperator ?\n await getUserByEmailOperator(emailAddress)\n :\n await getUserByEmailNonOperator(validatedAccountId, emailAddress)\n\n }\n\n if (resetPasswordMethod === \"sms\" || resetPasswordMethod === \"whatapps\") {\n if (validateFormatMobileNumber(mobileNumber) === false) {\n throw new Error(`Invalid mobile number: ${mobileNumber}`);\n }\n\n // get the user by email\n user = isOperator ?\n await getUserByMobileOperator(mobileNumber)\n :\n await getUserByMobileNonOperator(validatedAccountId, mobileNumber)\n\n }\n\n if (emailAddress === \"\" && mobileNumber === \"\") {\n throw new Error(`Either email address or mobile number is required`);\n }\n\n // verify the user\n if (!user?.user_id) {\n throw new Error(`Cannot find the user by ${resetPasswordMethod}: ${emailAddress ? emailAddress : mobileNumber}`);\n }\n\n // verify the user active\n if (Boolean(user?.status) === false) {\n throw new Error(`User is invalid status: ${user?.user_id ?? 0}`);\n }\n\n const userId = Number(user?.user_id ?? 0)\n const userType = user?.user_type ?? \"\"\n\n const codePayload: OneTimeCodeCreateProps = {\n field_ref: \"user\",\n field_module: userType,\n data: {\n purposeType: \"reset_password\",\n codeType,\n emailAddress,\n mobileNumber,\n userId,\n userType\n }\n }\n\n // generate the code \n const oneTimeCode = await oneTimeCodeService.createOneTimeCode(codePayload)\n\n // console.log('oneTimeCode', oneTimeCode)\n\n let responseOneTimeCode = await oneTimeCodeService.getOneTimeCode({ id: Number(oneTimeCode?.one_time_code_id ?? 0), datatypes: [] })\n\n // Call the consumer hook, if registered\n if (ResetPasswordHook.onRequest) {\n\n const responseCustomHook = await ResetPasswordHook.onRequest({\n userId,\n userType,\n resetPasswordMethod,\n emailAddress,\n mobileNumber,\n oneTimeCode: oneTimeCode?.code ?? \"\",\n user\n })\n\n responseOneTimeCode = { ...responseOneTimeCode, custom: responseCustomHook }\n\n }\n\n return responseOneTimeCode\n }\n\n const validateResetPasscodeCode = async ({ data }: ResetPasswordValidateCodeProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n }\n\n const oneTimeCode = data.oneTimeCode ?? \"\"\n\n if (!oneTimeCode) {\n throw new Error(`Reset passcode code cannot be empty`);\n }\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n // check code exist\n const { data: existOneTimeCodes } = await oneTimeCodeService.listOneTimeCodes({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelOneTimeCodeFields.code}`,\n operator: \"=\",\n value: `${oneTimeCode}`\n },\n {\n field: `${ModelOneTimeCodeFields.purpose_type}`,\n operator: \"=\",\n value: `${oneTimeCodePurposeTypes.reset_password}`\n },\n ],\n sortfield: `${ModelOneTimeCodeFields.one_time_code_id}`,\n sortorder: \"ASC\",\n datatypes: [],\n revealCode: true // return the code as well\n })\n\n if (existOneTimeCodes.length <= 0) {\n throw new Error(`Invalid reset password code: ${oneTimeCode}`);\n }\n\n const existOneTimeCode = existOneTimeCodes[0]\n\n // check is not used before\n if (existOneTimeCode?.code_status !== oneTimeCodeStatus.active) {\n throw new Error(`Reset password code is not active/used: ${oneTimeCode}`);\n }\n\n const expiresAt = dayjs(existOneTimeCode?.expires_at)\n const codeIsExpired = dayjs().isAfter(expiresAt)\n\n // check code is expired\n if (codeIsExpired) {\n throw new Error(`Reset password code is expired: ${oneTimeCode}`);\n }\n\n // console.log('existOneTimeCode', existOneTimeCode)\n\n return existOneTimeCode\n }\n\n const performResetPassword = async ({ data }: ResetPasswordPerformProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n let validatedAccountCode = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n validatedAccountCode = acc.accountCode\n }\n\n // get the onSetup from hook\n const hookSetup = ResetPasswordHook.onSetup()\n\n // const codeType: OneTimeCodeType = hookSetup.oneTimeCodeType\n const resetPasswordMethod: ResetPasswordMethod = hookSetup.resetPasswordMethod\n const oneTimeCode = data?.oneTimeCode ?? \"\"\n const newPassword = data?.newPassword ?? \"\"\n\n if (!oneTimeCode) {\n throw new Error(`One Time Code is required`);\n }\n\n if (!newPassword) {\n throw new Error(`New password is required`);\n }\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n\n // validate the one time code\n const validateOneTimeCode = await validateResetPasscodeCode({\n data: {\n isOperator,\n accountCode: validatedAccountCode,\n accountId: `${validatedAccountId}`,\n oneTimeCode\n }\n })\n\n // retrieve the user by the one time code\n const oneTimeCodeUserId = validateOneTimeCode?.user_id ?? \"\"\n const oneTimeCodeUserType = validateOneTimeCode?.user_type ?? \"\"\n\n if (!oneTimeCodeUserId) {\n throw new Error(`Invalid one time code userId: ${oneTimeCode}`);\n }\n\n if (!oneTimeCodeUserType) {\n throw new Error(`Invalid one time code userId Type: ${oneTimeCode}`);\n }\n\n // retrive the user information\n const userService = UserService({\n ...rest,\n isOperator: true, // skip the account id\n accountId: Number(validatedAccountId),\n userType: oneTimeCodeUserType\n })\n\n const user = await userService.getUser({\n id: Number(oneTimeCodeUserId),\n datatypes: [],\n skipFilterUserType: true,\n })\n\n // verify the user\n if (!user?.user_id) {\n throw new Error(`Cannot find the userId: ${Number(oneTimeCodeUserId)}`);\n }\n\n // verify the user active\n if (Boolean(user?.status) === false) {\n throw new Error(`User is invalid status: ${user?.user_id ?? 0}`);\n }\n\n const userId = Number(user?.user_id ?? 0)\n const userType = user?.user_type ?? \"\"\n\n // consume the one time code\n let responseConsume = await oneTimeCodeService.consumeOneTimeCode({\n field_ref: \"user\",\n field_module: userType,\n data: {\n oneTimeCode,\n purposeType: \"reset_password\",\n userId,\n userType\n }\n })\n\n // change password for user\n let responseOnSuccess = await userService.replacePassword({\n id: userId,\n data: {\n unhashLoginPassword: newPassword\n },\n isOperator: Boolean(isOperator)\n })\n\n // Call the consumer hook, if registered\n if (ResetPasswordHook.onSuccess) {\n\n const responseCustomHook = await ResetPasswordHook.onSuccess({\n userId,\n userType,\n resetPasswordMethod,\n oneTimeCode,\n user\n })\n\n responseOnSuccess = { ...responseOnSuccess, custom: responseCustomHook }\n\n }\n\n return {\n ...responseOnSuccess,\n consumeOneTimeCode: responseConsume\n }\n }\n\n return {\n requestResetPassword,\n validateResetPasscodeCode,\n performResetPassword\n }\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"ResetPasswordService.js","sourceRoot":"","sources":["../../../src/services/reset_password/ResetPasswordService.ts"],"names":[],"mappings":"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","sourcesContent":["import { DefaultServiceProps, validateFormatEmailAddress, validateFormatMobileNumber, throwError } from \"@/utils\";\n\n// import { QueryList, QueryGet } from \"@/schema/common\";\n\n// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { dayjs } from \"@/utils\";\n\nimport { ModelAccountFields, ModelOneTimeCodeFields, ModelUserFields } from \"@/models\";\nimport { UserService, AccountService, OneTimeCodeService, OneTimeCodeType, OneTimeCodeCreateProps, oneTimeCodeStatus, oneTimeCodePurposeTypes, AccountListProps } from \"@/services\"\n\nimport { ResetPasswordHook } from \"@/features\"\n\nexport const resetPasswordMethods = {\n email: \"email\",\n sms: \"sms\",\n whatapps: \"whatapps\",\n} as const\n\nexport type ResetPasswordMethod = typeof resetPasswordMethods[keyof typeof resetPasswordMethods]\n\nexport type ResetPasswordServiceProps = DefaultServiceProps & {\n};\n\ntype defaultResetPasswordProps = {\n isOperator: boolean\n accountId: string\n accountCode: string\n}\n\nexport type ResetPasswordRequestProps = {\n data: defaultResetPasswordProps & {\n emailAddress?: string\n mobileNumber?: string\n }\n}\n\nexport type ResetPasswordValidateCodeProps = {\n data: defaultResetPasswordProps & {\n oneTimeCode: string\n }\n}\n\nexport type ResetPasswordPerformProps = {\n data: defaultResetPasswordProps & {\n oneTimeCode: string\n newPassword: string\n }\n}\n\nexport const ResetPasswordService = (props: ResetPasswordServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const globalAccountService = AccountService({ ...rest, isOperator: true })\n\n const validateAccount = async ({ accountId, accountCode }: {\n accountId: string,\n accountCode: string\n }) => {\n\n if (!accountId && !accountCode) {\n throwError(`AccountId or AccountCode is required`)\n }\n\n let filters: AccountListProps[\"filters\"] = []\n\n if (accountId !== \"\") {\n filters = [{\n field: `${ModelAccountFields.account_id}`,\n operator: \"=\",\n value: `${accountId}`\n }]\n }\n\n if (accountCode !== \"\") {\n filters = [{\n field: `${ModelAccountFields.account_code}`,\n operator: \"=\",\n value: `${accountCode}`\n }]\n }\n\n const { data: dataAccounts } = await globalAccountService.listAccounts({\n limit: 1,\n offset: 0,\n filters,\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n const dataAccount = dataAccounts.length > 0 ? dataAccounts[0] : {}\n\n if (!dataAccount?.account_id) {\n throwError(`Unable to retrieve account`)\n }\n\n return {\n accountId: dataAccount?.account_id ?? \"\",\n accountCode: dataAccount?.account_code ?? \"\"\n }\n\n }\n\n // get the user by email (non operator)\n const getUserByEmailNonOperator = async (\n accountId: ResetPasswordRequestProps[\"data\"][\"accountId\"],\n emailAddress: ResetPasswordRequestProps[\"data\"][\"emailAddress\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: Number(accountId), // need to override the account id,\n isOperator: false,\n userType: \"administrator\"\n })\n\n // get the user by email\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelUserFields.email}`,\n operator: \"=\",\n value: `${emailAddress}`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n }\n\n // get the user by email (operator)\n const getUserByEmailOperator = async (\n emailAddress: ResetPasswordRequestProps[\"data\"][\"emailAddress\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: 0, // not important\n isOperator: true,\n userType: \"operator\"\n })\n\n // get the user by email\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelUserFields.email}`,\n operator: \"=\",\n value: `${emailAddress}`\n },\n {\n field: `${ModelUserFields.user_type}`,\n operator: \"=\",\n value: `operator`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n // skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n }\n\n // get the user by mobile (non operator)\n const getUserByMobileNonOperator = async (\n accountId: ResetPasswordRequestProps[\"data\"][\"accountId\"],\n mobileNumber: ResetPasswordRequestProps[\"data\"][\"mobileNumber\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: Number(accountId), // need to override the account id,\n isOperator: false,\n userType: \"administrator\"\n })\n\n // get the user by contact\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `contact`,\n operator: \"=\",\n value: `${mobileNumber}`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n\n }\n\n // get the user by mobile (operator)\n const getUserByMobileOperator = async (\n mobileNumber: ResetPasswordRequestProps[\"data\"][\"mobileNumber\"]\n ) => {\n\n const globalUserService = UserService({\n ...rest,\n accountId: 0, // not important\n isOperator: true,\n userType: \"operator\"\n })\n\n // get the user by contact\n let { data: dataUser } = await globalUserService.listUsers({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `contact`,\n operator: \"=\",\n value: `${mobileNumber}`\n },\n {\n field: `${ModelUserFields.user_type}`,\n operator: \"=\",\n value: `operator`\n }\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n includePassword: false,\n skipFilterUserType: true,\n datatypes: []\n })\n\n return dataUser.length > 0 ? dataUser[0] : {}\n\n }\n\n const requestResetPassword = async ({ data }: ResetPasswordRequestProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n }\n\n // get the onSetup from hook\n const hookSetup = ResetPasswordHook.onSetup()\n\n const codeType: OneTimeCodeType = hookSetup.oneTimeCodeType\n const resetPasswordMethod: ResetPasswordMethod = hookSetup.resetPasswordMethod\n const emailAddress = data?.emailAddress ?? \"\"\n const mobileNumber = data?.mobileNumber ?? \"\"\n\n let user: any = {}\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n if (!resetPasswordMethod) {\n throw new Error(`Invalid reset password method: ${hookSetup?.resetPasswordMethod ?? \"\"}`);\n }\n\n if (resetPasswordMethod === \"email\") {\n if (validateFormatEmailAddress(emailAddress) === false) {\n throw new Error(`Invalid email address: ${emailAddress}`);\n }\n\n // get the user by email\n user = isOperator ?\n await getUserByEmailOperator(emailAddress)\n :\n await getUserByEmailNonOperator(validatedAccountId, emailAddress)\n\n }\n\n if (resetPasswordMethod === \"sms\" || resetPasswordMethod === \"whatapps\") {\n if (validateFormatMobileNumber(mobileNumber) === false) {\n throw new Error(`Invalid mobile number: ${mobileNumber}`);\n }\n\n // get the user by email\n user = isOperator ?\n await getUserByMobileOperator(mobileNumber)\n :\n await getUserByMobileNonOperator(validatedAccountId, mobileNumber)\n\n }\n\n if (emailAddress === \"\" && mobileNumber === \"\") {\n throw new Error(`Either email address or mobile number is required`);\n }\n\n // verify the user\n if (!user?.user_id) {\n throw new Error(`Cannot find the user by ${resetPasswordMethod}: ${emailAddress ? emailAddress : mobileNumber}`);\n }\n\n // verify the user active\n if (Boolean(user?.status) === false) {\n throw new Error(`User is invalid status: ${user?.user_id ?? 0}`);\n }\n\n const userId = Number(user?.user_id ?? 0)\n const userType = user?.user_type ?? \"\"\n\n const codePayload: OneTimeCodeCreateProps = {\n field_ref: \"user\",\n field_module: userType,\n data: {\n purposeType: \"reset_password\",\n codeType,\n emailAddress,\n mobileNumber,\n userId,\n userType\n }\n }\n\n // generate the code \n const oneTimeCode = await oneTimeCodeService.createOneTimeCode(codePayload)\n\n // console.log('oneTimeCode', oneTimeCode)\n\n let responseOneTimeCode = await oneTimeCodeService.getOneTimeCode({ id: Number(oneTimeCode?.one_time_code_id ?? 0), datatypes: [] })\n\n // Call the consumer hook, if registered\n if (ResetPasswordHook.onRequest) {\n\n const responseCustomHook = await ResetPasswordHook.onRequest({\n defaultServiceProps: rest,\n callbackParams: {\n userId,\n userType,\n resetPasswordMethod,\n emailAddress,\n mobileNumber,\n oneTimeCode: oneTimeCode?.code ?? \"\",\n user\n }\n })\n\n responseOneTimeCode = { ...responseOneTimeCode, custom: responseCustomHook }\n\n }\n\n return responseOneTimeCode\n }\n\n const validateResetPasscodeCode = async ({ data }: ResetPasswordValidateCodeProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n }\n\n const oneTimeCode = data.oneTimeCode ?? \"\"\n\n if (!oneTimeCode) {\n throw new Error(`Reset passcode code cannot be empty`);\n }\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n // check code exist\n const { data: existOneTimeCodes } = await oneTimeCodeService.listOneTimeCodes({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelOneTimeCodeFields.code}`,\n operator: \"=\",\n value: `${oneTimeCode}`\n },\n {\n field: `${ModelOneTimeCodeFields.purpose_type}`,\n operator: \"=\",\n value: `${oneTimeCodePurposeTypes.reset_password}`\n },\n ],\n sortfield: `${ModelOneTimeCodeFields.one_time_code_id}`,\n sortorder: \"ASC\",\n datatypes: [],\n revealCode: true // return the code as well\n })\n\n if (existOneTimeCodes.length <= 0) {\n throw new Error(`Invalid reset password code: ${oneTimeCode}`);\n }\n\n const existOneTimeCode = existOneTimeCodes[0]\n\n // check is not used before\n if (existOneTimeCode?.code_status !== oneTimeCodeStatus.active) {\n throw new Error(`Reset password code is not active/used: ${oneTimeCode}`);\n }\n\n const expiresAt = dayjs(existOneTimeCode?.expires_at)\n const codeIsExpired = dayjs().isAfter(expiresAt)\n\n // check code is expired\n if (codeIsExpired) {\n throw new Error(`Reset password code is expired: ${oneTimeCode}`);\n }\n\n // console.log('existOneTimeCode', existOneTimeCode)\n\n return existOneTimeCode\n }\n\n const performResetPassword = async ({ data }: ResetPasswordPerformProps) => {\n\n const isOperator = Boolean(data.isOperator) // check if reset password for operator user or other users(account related)\n const accountId = data.accountId ?? \"\"\n const accountCode = data.accountCode ?? \"\"\n\n let validatedAccountId = ``\n let validatedAccountCode = ``\n\n // only non operator will check the account\n if (isOperator === false) {\n let acc = await validateAccount({ accountCode, accountId })\n validatedAccountId = acc.accountId\n validatedAccountCode = acc.accountCode\n }\n\n // get the onSetup from hook\n const hookSetup = ResetPasswordHook.onSetup()\n\n // const codeType: OneTimeCodeType = hookSetup.oneTimeCodeType\n const resetPasswordMethod: ResetPasswordMethod = hookSetup.resetPasswordMethod\n const oneTimeCode = data?.oneTimeCode ?? \"\"\n const newPassword = data?.newPassword ?? \"\"\n\n if (!oneTimeCode) {\n throw new Error(`One Time Code is required`);\n }\n\n if (!newPassword) {\n throw new Error(`New password is required`);\n }\n\n const oneTimeCodeService = OneTimeCodeService({\n ...rest,\n accountId: isOperator ? 0 : Number(validatedAccountId),\n isOperator,\n field_ref: \"user\",\n field_module: \"administrator\"\n })\n\n\n // validate the one time code\n const validateOneTimeCode = await validateResetPasscodeCode({\n data: {\n isOperator,\n accountCode: validatedAccountCode,\n accountId: `${validatedAccountId}`,\n oneTimeCode\n }\n })\n\n // retrieve the user by the one time code\n const oneTimeCodeUserId = validateOneTimeCode?.user_id ?? \"\"\n const oneTimeCodeUserType = validateOneTimeCode?.user_type ?? \"\"\n\n if (!oneTimeCodeUserId) {\n throw new Error(`Invalid one time code userId: ${oneTimeCode}`);\n }\n\n if (!oneTimeCodeUserType) {\n throw new Error(`Invalid one time code userId Type: ${oneTimeCode}`);\n }\n\n // retrive the user information\n const userService = UserService({\n ...rest,\n isOperator: true, // skip the account id\n accountId: Number(validatedAccountId),\n userType: oneTimeCodeUserType\n })\n\n const user = await userService.getUser({\n id: Number(oneTimeCodeUserId),\n datatypes: [],\n skipFilterUserType: true,\n })\n\n // verify the user\n if (!user?.user_id) {\n throw new Error(`Cannot find the userId: ${Number(oneTimeCodeUserId)}`);\n }\n\n // verify the user active\n if (Boolean(user?.status) === false) {\n throw new Error(`User is invalid status: ${user?.user_id ?? 0}`);\n }\n\n const userId = Number(user?.user_id ?? 0)\n const userType = user?.user_type ?? \"\"\n\n // consume the one time code\n let responseConsume = await oneTimeCodeService.consumeOneTimeCode({\n field_ref: \"user\",\n field_module: userType,\n data: {\n oneTimeCode,\n purposeType: \"reset_password\",\n userId,\n userType\n }\n })\n\n // change password for user\n let responseOnSuccess = await userService.replacePassword({\n id: userId,\n data: {\n unhashLoginPassword: newPassword\n },\n isOperator: Boolean(isOperator)\n })\n\n // Call the consumer hook, if registered\n if (ResetPasswordHook.onSuccess) {\n\n const responseCustomHook = await ResetPasswordHook.onSuccess({\n defaultServiceProps: rest,\n callbackParams: {\n userId,\n userType,\n resetPasswordMethod,\n oneTimeCode,\n user\n }\n })\n\n responseOnSuccess = { ...responseOnSuccess, custom: responseCustomHook }\n\n }\n\n return {\n ...responseOnSuccess,\n consumeOneTimeCode: responseConsume\n }\n }\n\n return {\n requestResetPassword,\n validateResetPasscodeCode,\n performResetPassword\n }\n\n}\n\n"]}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UserMeService = exports.userTypes = void 0;
|
|
4
4
|
const models_1 = require("../../models");
|
|
5
|
-
// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from "../../lib";
|
|
6
5
|
const utils_1 = require("../../utils");
|
|
7
|
-
// import { hashPassword } from "../../utils";
|
|
8
6
|
const lib_1 = require("../../lib");
|
|
9
7
|
const services_1 = require("../../services");
|
|
8
|
+
const features_1 = require("../../features");
|
|
10
9
|
exports.userTypes = {
|
|
11
10
|
operator: "operator",
|
|
12
11
|
administrator: "administrator",
|
|
@@ -49,214 +48,6 @@ const UserMeService = (props) => {
|
|
|
49
48
|
const userId = rest.actionUserId;
|
|
50
49
|
const userService = (0, services_1.UserService)({ ...rest, userType });
|
|
51
50
|
const userModel = (0, models_1.UserModel)({ ...rest });
|
|
52
|
-
// const userModel = UserModel({ ...rest })
|
|
53
|
-
// const userPropService = UserPropService({ ...rest, userPropType: "LOCATION_ID" })
|
|
54
|
-
// const customerService = CustomerService({ ...rest })
|
|
55
|
-
// const administratorService = AdministratorService({ ...rest })
|
|
56
|
-
// const operatorService = OperatorService({ ...rest })
|
|
57
|
-
// const workerService = WorkerService({ ...rest })
|
|
58
|
-
// const driverService = DriverService({ ...rest })
|
|
59
|
-
// const retailerService = RetailerService({ ...rest })
|
|
60
|
-
// const memberService = MemberService({ ...rest })
|
|
61
|
-
// const agentService = AgentService({ ...rest })
|
|
62
|
-
// const validateAuthToken = (token: string) => {
|
|
63
|
-
// // retrive core configuration
|
|
64
|
-
// const coreConfig = getCoreConfiguration()
|
|
65
|
-
// // const authSecretKey = config.AUTH_SECRET_KEY
|
|
66
|
-
// const authSecretKey = coreConfig.authSecretKey
|
|
67
|
-
// // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token
|
|
68
|
-
// const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token
|
|
69
|
-
// }
|
|
70
|
-
// const validateAuthAccessKey = async (accessKey: string) => {
|
|
71
|
-
// const accessKeyUtilService = AccessKeyUtilService({
|
|
72
|
-
// accessKeyUserType: "administrator",
|
|
73
|
-
// accountId: 0,
|
|
74
|
-
// actionUserId: 0,
|
|
75
|
-
// actionUserType: "",
|
|
76
|
-
// authToken: "",
|
|
77
|
-
// isOperator: true,
|
|
78
|
-
// })
|
|
79
|
-
// const accessKeyData = await accessKeyUtilService.validateAccessKey({ data: { accessKey } });
|
|
80
|
-
// }
|
|
81
|
-
// const updateMe = async ({ id, data, userType: overrideUserType }: UserMeUpdateProps) => {
|
|
82
|
-
// const _userType = overrideUserType || userType
|
|
83
|
-
// // validate the credential contact no
|
|
84
|
-
// const userLoginUsername = data.user.loginUsername
|
|
85
|
-
// const userLoginPassword = data.user?.loginPassword ?? ""
|
|
86
|
-
// const userContactCountryCode = data.user.contact.countryCode
|
|
87
|
-
// const userContactPhoneNumber = data.user.contact.phoneNumber
|
|
88
|
-
// // validate the contact no only can be digit in text only
|
|
89
|
-
// // validate the country code in prefix
|
|
90
|
-
// // await validateUserContact(userContactCountryCode, userContactPhoneNumber)
|
|
91
|
-
// // validate login username
|
|
92
|
-
// // validateLoginUsernameFormat(userLoginUsername)
|
|
93
|
-
// // validate login password
|
|
94
|
-
// // if (userLoginPassword) {
|
|
95
|
-
// // validateLoginPasswordFormat(userLoginPassword)
|
|
96
|
-
// // }
|
|
97
|
-
// // check the username duplicated?
|
|
98
|
-
// const checkUsername = await userModel.list({
|
|
99
|
-
// limit: 1,
|
|
100
|
-
// offset: 0,
|
|
101
|
-
// orderBy: {
|
|
102
|
-
// [`${ModelUserFields.user_id}`]: "asc"
|
|
103
|
-
// },
|
|
104
|
-
// include: [],
|
|
105
|
-
// where: {
|
|
106
|
-
// [`${ModelUserFields.login_username}`]: data.user.loginUsername,
|
|
107
|
-
// [`${ModelUserFields.isdelete}`]: false,
|
|
108
|
-
// [`${ModelUserFields.istrash}`]: false,
|
|
109
|
-
// [`${ModelUserFields.accountid}`]: rest.accountId,
|
|
110
|
-
// },
|
|
111
|
-
// })
|
|
112
|
-
// // console.log('ch', checkUsername)
|
|
113
|
-
// if (checkUsername.length > 0) {
|
|
114
|
-
// if (Number(checkUsername[0]?.user_id) !== Number(id)) { // if not self user id
|
|
115
|
-
// throwError(`Duplicated username: ${data.user.loginUsername}(${checkUsername[0]?.user_type})`)
|
|
116
|
-
// }
|
|
117
|
-
// }
|
|
118
|
-
// // validation before insertion
|
|
119
|
-
// // if (_userType === "member" && "member" in data) {
|
|
120
|
-
// // }
|
|
121
|
-
// const _data = await getUpdatePayload(
|
|
122
|
-
// _userType,
|
|
123
|
-
// data,
|
|
124
|
-
// {
|
|
125
|
-
// countryCode: userContactCountryCode,
|
|
126
|
-
// phoneNumber: userContactPhoneNumber
|
|
127
|
-
// }
|
|
128
|
-
// )
|
|
129
|
-
// if (!_data) {
|
|
130
|
-
// throw new Error(`Invalid update payload: ${JSON.stringify(_data)}`);
|
|
131
|
-
// }
|
|
132
|
-
// // update user
|
|
133
|
-
// let responseUser = await userModel.update({ id, data: _data })
|
|
134
|
-
// let updateUserId = responseUser.user_id
|
|
135
|
-
// let response: any = {}
|
|
136
|
-
// if (_userType === "customer" && "customer" in data) {
|
|
137
|
-
// let dataCustomer: CustomerUpdateProps["data"] = {
|
|
138
|
-
// customer: {
|
|
139
|
-
// ...data.customer
|
|
140
|
-
// }
|
|
141
|
-
// }
|
|
142
|
-
// await customerService.updateCustomer({ userId: Number(updateUserId), data: dataCustomer })
|
|
143
|
-
// response = await customerService.getCustomer({ id: Number(updateUserId), datatypes: [] })
|
|
144
|
-
// }
|
|
145
|
-
// if (_userType === "operator" && "operator" in data) {
|
|
146
|
-
// let dataOperator: OperatorUpdateProps["data"] = {
|
|
147
|
-
// operator: {
|
|
148
|
-
// ...data.operator
|
|
149
|
-
// }
|
|
150
|
-
// }
|
|
151
|
-
// await operatorService.updateOperator({ userId: Number(updateUserId), data: dataOperator })
|
|
152
|
-
// response = await operatorService.getOperator({ id: Number(updateUserId), datatypes: [] })
|
|
153
|
-
// }
|
|
154
|
-
// if (_userType === "administrator" && "administrator" in data) {
|
|
155
|
-
// let dataCustomer: AdministratorUpdateProps["data"] = {
|
|
156
|
-
// administrator: {
|
|
157
|
-
// ...data.administrator
|
|
158
|
-
// }
|
|
159
|
-
// }
|
|
160
|
-
// await administratorService.updateAdministrator({ userId: Number(updateUserId), data: dataCustomer })
|
|
161
|
-
// // replace user prop
|
|
162
|
-
// await userPropService.replaceUserProp({
|
|
163
|
-
// userPropType: "LOCATION_ID",
|
|
164
|
-
// data: {
|
|
165
|
-
// userProp: {
|
|
166
|
-
// userId: Number(updateUserId),
|
|
167
|
-
// locationIds: data.props.locationIds
|
|
168
|
-
// }
|
|
169
|
-
// }
|
|
170
|
-
// })
|
|
171
|
-
// response = await administratorService.getAdministrator({ id: Number(updateUserId), datatypes: [] })
|
|
172
|
-
// }
|
|
173
|
-
// if (_userType === "worker" && "worker" in data) {
|
|
174
|
-
// let dataWorker: WorkerUpdateProps["data"] = {
|
|
175
|
-
// worker: {
|
|
176
|
-
// ...data.worker
|
|
177
|
-
// }
|
|
178
|
-
// }
|
|
179
|
-
// await workerService.updateWorker({ userId: Number(updateUserId), data: dataWorker })
|
|
180
|
-
// // replace user prop
|
|
181
|
-
// await userPropService.replaceUserProp({
|
|
182
|
-
// userPropType: "LOCATION_ID",
|
|
183
|
-
// data: {
|
|
184
|
-
// userProp: {
|
|
185
|
-
// userId: Number(updateUserId),
|
|
186
|
-
// locationIds: data.props.locationIds
|
|
187
|
-
// }
|
|
188
|
-
// }
|
|
189
|
-
// })
|
|
190
|
-
// response = await workerService.getWorker({ id: Number(updateUserId), datatypes: [] })
|
|
191
|
-
// }
|
|
192
|
-
// if (_userType === "driver" && "driver" in data) {
|
|
193
|
-
// let dataDriver: DriverUpdateProps["data"] = {
|
|
194
|
-
// driver: {
|
|
195
|
-
// ...data.driver
|
|
196
|
-
// }
|
|
197
|
-
// }
|
|
198
|
-
// await driverService.updateDriver({ userId: Number(updateUserId), data: dataDriver })
|
|
199
|
-
// // replace user prop
|
|
200
|
-
// await userPropService.replaceUserProp({
|
|
201
|
-
// userPropType: "LOCATION_ID",
|
|
202
|
-
// data: {
|
|
203
|
-
// userProp: {
|
|
204
|
-
// userId: Number(updateUserId),
|
|
205
|
-
// locationIds: data.props.locationIds
|
|
206
|
-
// }
|
|
207
|
-
// }
|
|
208
|
-
// })
|
|
209
|
-
// response = await driverService.getDriver({ id: Number(updateUserId), datatypes: [] })
|
|
210
|
-
// }
|
|
211
|
-
// if (_userType === "member" && "member" in data) {
|
|
212
|
-
// let dataMember: MemberUpdateProps["data"] = {
|
|
213
|
-
// member: {
|
|
214
|
-
// ...data.member
|
|
215
|
-
// }
|
|
216
|
-
// }
|
|
217
|
-
// await memberService.updateMember({ userId: Number(updateUserId), data: dataMember })
|
|
218
|
-
// // replace user prop
|
|
219
|
-
// // await userPropService.replaceUserProp({
|
|
220
|
-
// // userPropType: "LOCATION_ID",
|
|
221
|
-
// // data: {
|
|
222
|
-
// // userProp: {
|
|
223
|
-
// // userId: Number(updateUserId),
|
|
224
|
-
// // locationIds: data.props.locationIds
|
|
225
|
-
// // }
|
|
226
|
-
// // }
|
|
227
|
-
// // })
|
|
228
|
-
// response = await memberService.getUserMember({ id: Number(updateUserId), datatypes: [] })
|
|
229
|
-
// }
|
|
230
|
-
// if (_userType === "agent" && "agent" in data) {
|
|
231
|
-
// let dataAgent: AgentUpdateProps["data"] = {
|
|
232
|
-
// agent: {
|
|
233
|
-
// ...data.agent
|
|
234
|
-
// }
|
|
235
|
-
// }
|
|
236
|
-
// await agentService.updateAgent({ userId: Number(updateUserId), data: dataAgent })
|
|
237
|
-
// // replace user prop
|
|
238
|
-
// // await userPropService.replaceUserProp({
|
|
239
|
-
// // userPropType: "LOCATION_ID",
|
|
240
|
-
// // data: {
|
|
241
|
-
// // userProp: {
|
|
242
|
-
// // userId: Number(updateUserId),
|
|
243
|
-
// // locationIds: data.props.locationIds
|
|
244
|
-
// // }
|
|
245
|
-
// // }
|
|
246
|
-
// // })
|
|
247
|
-
// response = await agentService.getAgent({ id: Number(updateUserId), datatypes: [] })
|
|
248
|
-
// }
|
|
249
|
-
// if (_userType === "retailer" && "retailer" in data) {
|
|
250
|
-
// let dataRetailer: RetailerUpdateProps["data"] = {
|
|
251
|
-
// retailer: {
|
|
252
|
-
// ...data.retailer
|
|
253
|
-
// }
|
|
254
|
-
// }
|
|
255
|
-
// await retailerService.updateRetailer({ userId: Number(updateUserId), data: dataRetailer })
|
|
256
|
-
// response = await retailerService.getRetailer({ id: Number(updateUserId), datatypes: [] })
|
|
257
|
-
// }
|
|
258
|
-
// return response
|
|
259
|
-
// }
|
|
260
51
|
const getUserMe = async () => {
|
|
261
52
|
const id = userId;
|
|
262
53
|
const data = await userService.getUser({ id: userId, datatypes: [] });
|
|
@@ -278,10 +69,30 @@ const UserMeService = (props) => {
|
|
|
278
69
|
[`${models_1.ModelUserFields.address}`]: address,
|
|
279
70
|
}
|
|
280
71
|
});
|
|
281
|
-
|
|
72
|
+
const userMe = await userService.getUser({ id: Number(userId), datatypes: [] });
|
|
73
|
+
// Call the consumer hook, if success
|
|
74
|
+
if (features_1.UserMeHook.onSuccessUpdateMe) {
|
|
75
|
+
await features_1.UserMeHook.onSuccessUpdateMe({
|
|
76
|
+
defaultServiceProps: rest,
|
|
77
|
+
callbackParams: {
|
|
78
|
+
userMe
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return userMe;
|
|
282
83
|
};
|
|
283
84
|
const removeUserMe = async () => {
|
|
85
|
+
const currentMe = await userService.getUser({ id: Number(userId), datatypes: [] });
|
|
284
86
|
const response = await userService.suspendUsers({ ids: [BigInt(userId)] });
|
|
87
|
+
// Call the consumer hook, if remove
|
|
88
|
+
if (features_1.UserMeHook.onSuccessRemoveMe) {
|
|
89
|
+
await features_1.UserMeHook.onSuccessRemoveMe({
|
|
90
|
+
defaultServiceProps: rest,
|
|
91
|
+
callbackParams: {
|
|
92
|
+
userMe: currentMe
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
285
96
|
return response;
|
|
286
97
|
};
|
|
287
98
|
const changePasswordUserMe = async ({ currentPassword, confirmPassword, newPassword }) => {
|
|
@@ -327,6 +138,17 @@ const UserMeService = (props) => {
|
|
|
327
138
|
},
|
|
328
139
|
isOperator: Boolean(userType === "operator")
|
|
329
140
|
});
|
|
141
|
+
// Call the consumer hook, if change password
|
|
142
|
+
if (features_1.UserMeHook.onSuccessChangePasswordMe) {
|
|
143
|
+
// remove the password
|
|
144
|
+
delete user.password;
|
|
145
|
+
await features_1.UserMeHook.onSuccessChangePasswordMe({
|
|
146
|
+
defaultServiceProps: rest,
|
|
147
|
+
callbackParams: {
|
|
148
|
+
userMe: user
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
330
152
|
return responseUser;
|
|
331
153
|
};
|
|
332
154
|
const allowUserTypes = ["any"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMeService.js","sourceRoot":"","sources":["../../../src/services/user/UserMeService.ts"],"names":[],"mappings":";;;AAAA,qCAOkB;AAelB,mKAAmK;AAEnK,mCAAuG;AAEvG,0CAA0C;AAE1C,+BAAuC;AAEvC,yCAA0E;AAE7D,QAAA,SAAS,GAAG;IACrB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;CACR,CAAA;AAoBV,mCAAmC;AACnC,0BAA0B;AAC1B,uCAAuC;AACvC,iBAAiB;AACjB,+BAA+B;AAC/B,8BAA8B;AAC9B,QAAQ;AACR,SAAS;AAET,4BAA4B;AAE5B,+GAA+G;AAE/G,mBAAmB;AACnB,8EAA8E;AAC9E,sGAAsG;AACtG,iEAAiE;AACjE,gFAAgF;AAChF,gFAAgF;AAChF,6DAA6D;AAC7D,qEAAqE;AACrE,mEAAmE;AACnE,wEAAwE;AACxE,8DAA8D;AAC9D,YAAY;AACZ,QAAQ;AAER,mBAAmB;AAEnB,IAAI;AAEG,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IAEvD,MAAM,EACF,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,QAAQ,GAAG,IAAI,CAAC,cAA0B,CAAA;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAA;IAEhC,MAAM,WAAW,GAAG,IAAA,sBAAW,EAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtD,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAExC,2CAA2C;IAE3C,oFAAoF;IACpF,uDAAuD;IACvD,iEAAiE;IACjE,uDAAuD;IACvD,mDAAmD;IACnD,mDAAmD;IACnD,uDAAuD;IACvD,mDAAmD;IACnD,iDAAiD;IAEjD,iDAAiD;IAEjD,oCAAoC;IACpC,gDAAgD;IAEhD,sDAAsD;IACtD,qDAAqD;IAErD,+FAA+F;IAC/F,iFAAiF;IAEjF,IAAI;IAEJ,+DAA+D;IAE/D,0DAA0D;IAC1D,8CAA8C;IAC9C,wBAAwB;IACxB,2BAA2B;IAC3B,8BAA8B;IAC9B,yBAAyB;IACzB,4BAA4B;IAC5B,SAAS;IAET,mGAAmG;IACnG,IAAI;IAEJ,4FAA4F;IAE5F,qDAAqD;IAErD,4CAA4C;IAC5C,wDAAwD;IACxD,+DAA+D;IAC/D,mEAAmE;IACnE,mEAAmE;IAEnE,gEAAgE;IAChE,6CAA6C;IAC7C,mFAAmF;IAEnF,iCAAiC;IACjC,wDAAwD;IAExD,iCAAiC;IACjC,kCAAkC;IAClC,4DAA4D;IAC5D,WAAW;IAEX,wCAAwC;IACxC,mDAAmD;IACnD,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,oDAAoD;IACpD,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,8EAA8E;IAC9E,sDAAsD;IACtD,qDAAqD;IACrD,gEAAgE;IAChE,aAAa;IACb,SAAS;IAET,0CAA0C;IAE1C,sCAAsC;IACtC,yFAAyF;IACzF,4GAA4G;IAC5G,YAAY;IACZ,QAAQ;IAER,qCAAqC;IACrC,2DAA2D;IAC3D,WAAW;IAEX,4CAA4C;IAC5C,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,mDAAmD;IACnD,kDAAkD;IAClD,YAAY;IACZ,QAAQ;IAER,oBAAoB;IACpB,+EAA+E;IAC/E,QAAQ;IAER,qBAAqB;IACrB,qEAAqE;IAErE,8CAA8C;IAE9C,6BAA6B;IAE7B,4DAA4D;IAE5D,4DAA4D;IAC5D,0BAA0B;IAC1B,mCAAmC;IACnC,gBAAgB;IAChB,YAAY;IAEZ,qGAAqG;IAErG,oGAAoG;IAEpG,QAAQ;IAER,4DAA4D;IAE5D,4DAA4D;IAC5D,0BAA0B;IAC1B,mCAAmC;IACnC,gBAAgB;IAChB,YAAY;IAEZ,qGAAqG;IAErG,oGAAoG;IAEpG,QAAQ;IAER,sEAAsE;IAEtE,iEAAiE;IACjE,+BAA+B;IAC/B,wCAAwC;IACxC,gBAAgB;IAChB,YAAY;IAEZ,+GAA+G;IAE/G,+BAA+B;IAC/B,kDAAkD;IAClD,2CAA2C;IAC3C,sBAAsB;IACtB,8BAA8B;IAC9B,oDAAoD;IACpD,0DAA0D;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IAEb,8GAA8G;IAE9G,QAAQ;IAER,wDAAwD;IAExD,wDAAwD;IACxD,wBAAwB;IACxB,iCAAiC;IACjC,gBAAgB;IAChB,YAAY;IAEZ,+FAA+F;IAE/F,+BAA+B;IAC/B,kDAAkD;IAClD,2CAA2C;IAC3C,sBAAsB;IACtB,8BAA8B;IAC9B,oDAAoD;IACpD,0DAA0D;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IAEb,gGAAgG;IAEhG,QAAQ;IAER,wDAAwD;IAExD,wDAAwD;IACxD,wBAAwB;IACxB,iCAAiC;IACjC,gBAAgB;IAChB,YAAY;IAEZ,+FAA+F;IAE/F,+BAA+B;IAC/B,kDAAkD;IAClD,2CAA2C;IAC3C,sBAAsB;IACtB,8BAA8B;IAC9B,oDAAoD;IACpD,0DAA0D;IAC1D,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IAEb,gGAAgG;IAEhG,QAAQ;IAER,wDAAwD;IAExD,wDAAwD;IACxD,wBAAwB;IACxB,iCAAiC;IACjC,gBAAgB;IAChB,YAAY;IAEZ,+FAA+F;IAE/F,+BAA+B;IAC/B,qDAAqD;IACrD,8CAA8C;IAC9C,yBAAyB;IACzB,iCAAiC;IACjC,uDAAuD;IACvD,6DAA6D;IAC7D,uBAAuB;IACvB,mBAAmB;IACnB,gBAAgB;IAEhB,oGAAoG;IAEpG,QAAQ;IAER,sDAAsD;IAEtD,sDAAsD;IACtD,uBAAuB;IACvB,gCAAgC;IAChC,gBAAgB;IAChB,YAAY;IAEZ,4FAA4F;IAE5F,+BAA+B;IAC/B,qDAAqD;IACrD,8CAA8C;IAC9C,yBAAyB;IACzB,iCAAiC;IACjC,uDAAuD;IACvD,6DAA6D;IAC7D,uBAAuB;IACvB,mBAAmB;IACnB,gBAAgB;IAEhB,8FAA8F;IAE9F,QAAQ;IAER,4DAA4D;IAE5D,4DAA4D;IAC5D,0BAA0B;IAC1B,mCAAmC;IACnC,gBAAgB;IAChB,YAAY;IAEZ,qGAAqG;IAErG,oGAAoG;IAEpG,QAAQ;IAER,sBAAsB;IACtB,IAAI;IAEJ,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAEzB,MAAM,EAAE,GAAG,MAAM,CAAA;QAEjB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAErE,OAAO,IAAI,CAAA;IACf,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,EACxB,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,EAAE,EACb,OAAO,GAAG,EAAE,EACI,EAAE,EAAE;QAEpB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAE7E,4BAA4B;QAE5B,4BAA4B;QAC5B,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;YACjB,IAAA,kBAAU,EAAC,+BAA+B,CAAC,CAAA;QAC/C,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,MAAM,CAAC;YACnB,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE;gBACF,CAAC,GAAG,wBAAe,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS;gBAC3C,CAAC,GAAG,wBAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ;gBACzC,CAAC,GAAG,wBAAe,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO;aAC1C;SACJ,CAAC,CAAA;QAEF,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;IAE3E,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAE5B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;QAE1E,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAChC,eAAe,EACf,eAAe,EACf,WAAW,EACa,EAAE,EAAE;QAE5B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC,CAAA;QACtC,MAAM,cAAc,GAAG,IAAA,yBAAc,EAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;QACpG,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAEzF,4BAA4B;QAC5B,kCAAkC;QAElC,wCAAwC;QACxC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;YACjB,IAAA,kBAAU,EAAC,+BAA+B,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,8BAA8B;YAClE,IAAA,kBAAU,EAAC,kCAAkC,CAAC,CAAA;QAClD,CAAC;QAED,iDAAiD;QACjD,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;YAClC,IAAA,kBAAU,EAAC,yCAAyC,CAAC,CAAA;QACzD,CAAC;QAED,sCAAsC;QACtC,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;YAClC,IAAA,kBAAU,EAAC,sCAAsC,CAAC,CAAA;QACtD,CAAC;QAED,yCAAyC;QACzC,IAAA,mCAA2B,EAAC,WAAW,CAAC,CAAC;QAEzC,6BAA6B;QAC7B,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,IAAA,sBAAc,EAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC3E,8CAA8C;YAE9C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC3C,CAAC;QAEL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAA,kBAAU,EAAC,eAAe,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/C,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC;YACnD,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE;gBACF,mBAAmB,EAAE,WAAW;aACnC;YACD,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC;SAC/C,CAAC,CAAA;QAEF,OAAO,YAAY,CAAA;IAEvB,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAK,CAAU,CAAA;IAEvC,MAAM,aAAa,GAAG;QAClB,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE;QACvE,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE;QAChF,oBAAoB,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,yBAAyB,EAAE;QACzG,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE;KACnF,CAAC;IAEF,OAAO,IAAA,oBAAc,EAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AAEhE,CAAC,CAAA;AA1ZY,QAAA,aAAa,iBA0ZzB","sourcesContent":["import {\n UserModel,\n ModelCountry,\n CountryModel,\n ModelUserFields,\n ModelAdministratorFields,\n ModelCountryFields\n} from \"@/models\";\n\nimport { z } from \"zod\";\n\nimport { UserPropService, UserPropReplaceProps } from \"./UserPropService\";\n// import { CustomerGetProps, CustomerCreateProps, CustomerListProps, CustomerUpdateProps, CustomerService } from \"./CustomerService\";\n// import { AdministratorGetProps, AdministratorCreateProps, AdministratorUpdateProps, AdministratorListProps, AdministratorService } from \"./AdministratorService\";\n// import { WorkerCreateProps, WorkerGetProps, WorkerUpdateProps, WorkerListProps, WorkerService } from \"./WorkerService\";\n// import { DriverCreateProps, DriverGetProps, DriverUpdateProps, DriverListProps, DriverService } from \"./DriverService\";\n// import { RetailerCreateProps, RetailerGetProps, RetailerUpdateProps, RetailerListProps, RetailerService } from \"./RetailerService\";\n// import { MemberCreateProps, MemberGetProps, MemberUpdateProps, MemberListProps, MemberService } from \"./MemberService\";\n// import { AgentCreateProps, AgentGetProps, AgentUpdateProps, AgentListProps, AgentService } from \"./AgentService\";\n// import { OperatorCreateProps, OperatorGetProps, OperatorListProps, OperatorService, OperatorUpdateProps } from \"./OperatorService\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nimport { verifyPassword, validateLoginPasswordFormat, DefaultServiceProps, throwError } from \"@/utils\";\n\n// import { hashPassword } from \"@/utils\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nimport { UserService, AccountService, UserUpdateProps } from \"@/services\";\n\nexport const userTypes = {\n operator: \"operator\",\n administrator: \"administrator\",\n worker: \"worker\",\n supplier: \"supplier\",\n customer: \"customer\",\n driver: \"driver\",\n retailer: \"retailer\",\n member: \"member\",\n agent: \"agent\",\n} as const\n\nexport type UserType = typeof userTypes[keyof typeof userTypes]\n\nexport type UserMeServiceProps = DefaultServiceProps & {\n // userType: UserType\n};\n\nexport type UserMeChangePasswordProps = {\n currentPassword: string\n newPassword: string\n confirmPassword: string\n};\n\nexport type UserMeUpdateProps = {\n firstName: string\n lastName: string\n address: string\n};\n\n// const getUpdatePayload = async (\n// userType: UserType,\n// data: UserMeUpdateProps[\"data\"],\n// contact: {\n// countryCode: number,\n// phoneNumber: string\n// }\n// ) => {\n\n// if (\"user\" in data) {\n\n// const newHashPassword = data?.user?.loginPassword ? await hashPassword(data.user.loginPassword) : \"\"\n\n// return {\n// [`${ModelUserFields.login_username}`]: data.user.loginUsername,\n// ...(newHashPassword ? { [`${ModelUserFields.login_password}`]: newHashPassword } : {}),\n// [`${ModelUserFields.address}`]: data.user.address,\n// [`${ModelUserFields.contact_country_code}`]: contact.countryCode,\n// [`${ModelUserFields.contact_phone_number}`]: contact.phoneNumber,\n// [`${ModelUserFields.email}`]: data.user.email,\n// [`${ModelUserFields.firstname}`]: data.user.firstname,\n// [`${ModelUserFields.lastname}`]: data.user.lastname,\n// [`${ModelUserFields.status}`]: Boolean(data.user.status),\n// [`${ModelUserFields.user_type}`]: `${userType}`\n// }\n// }\n\n// return false\n\n// }\n\nexport const UserMeService = (props: UserMeServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const userType = rest.actionUserType as UserType\n const userId = rest.actionUserId\n\n const userService = UserService({ ...rest, userType })\n const userModel = UserModel({ ...rest })\n\n // const userModel = UserModel({ ...rest })\n\n // const userPropService = UserPropService({ ...rest, userPropType: \"LOCATION_ID\" })\n // const customerService = CustomerService({ ...rest })\n // const administratorService = AdministratorService({ ...rest })\n // const operatorService = OperatorService({ ...rest })\n // const workerService = WorkerService({ ...rest })\n // const driverService = DriverService({ ...rest })\n // const retailerService = RetailerService({ ...rest })\n // const memberService = MemberService({ ...rest })\n // const agentService = AgentService({ ...rest })\n\n // const validateAuthToken = (token: string) => {\n\n // // retrive core configuration\n // const coreConfig = getCoreConfiguration()\n\n // // const authSecretKey = config.AUTH_SECRET_KEY\n // const authSecretKey = coreConfig.authSecretKey\n\n // // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token\n // const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token\n\n // }\n\n // const validateAuthAccessKey = async (accessKey: string) => {\n\n // const accessKeyUtilService = AccessKeyUtilService({\n // accessKeyUserType: \"administrator\",\n // accountId: 0,\n // actionUserId: 0,\n // actionUserType: \"\",\n // authToken: \"\",\n // isOperator: true,\n // })\n\n // const accessKeyData = await accessKeyUtilService.validateAccessKey({ data: { accessKey } });\n // }\n\n // const updateMe = async ({ id, data, userType: overrideUserType }: UserMeUpdateProps) => {\n\n // const _userType = overrideUserType || userType\n\n // // validate the credential contact no\n // const userLoginUsername = data.user.loginUsername\n // const userLoginPassword = data.user?.loginPassword ?? \"\"\n // const userContactCountryCode = data.user.contact.countryCode\n // const userContactPhoneNumber = data.user.contact.phoneNumber\n\n // // validate the contact no only can be digit in text only\n // // validate the country code in prefix\n // // await validateUserContact(userContactCountryCode, userContactPhoneNumber)\n\n // // validate login username\n // // validateLoginUsernameFormat(userLoginUsername)\n\n // // validate login password\n // // if (userLoginPassword) {\n // // validateLoginPasswordFormat(userLoginPassword)\n // // }\n\n // // check the username duplicated?\n // const checkUsername = await userModel.list({\n // limit: 1,\n // offset: 0,\n // orderBy: {\n // [`${ModelUserFields.user_id}`]: \"asc\"\n // },\n // include: [],\n // where: {\n // [`${ModelUserFields.login_username}`]: data.user.loginUsername,\n // [`${ModelUserFields.isdelete}`]: false,\n // [`${ModelUserFields.istrash}`]: false,\n // [`${ModelUserFields.accountid}`]: rest.accountId,\n // },\n // })\n\n // // console.log('ch', checkUsername)\n\n // if (checkUsername.length > 0) {\n // if (Number(checkUsername[0]?.user_id) !== Number(id)) { // if not self user id\n // throwError(`Duplicated username: ${data.user.loginUsername}(${checkUsername[0]?.user_type})`)\n // }\n // }\n\n // // validation before insertion\n // // if (_userType === \"member\" && \"member\" in data) {\n // // }\n\n // const _data = await getUpdatePayload(\n // _userType,\n // data,\n // {\n // countryCode: userContactCountryCode,\n // phoneNumber: userContactPhoneNumber\n // }\n // )\n\n // if (!_data) {\n // throw new Error(`Invalid update payload: ${JSON.stringify(_data)}`);\n // }\n\n // // update user\n // let responseUser = await userModel.update({ id, data: _data })\n\n // let updateUserId = responseUser.user_id\n\n // let response: any = {}\n\n // if (_userType === \"customer\" && \"customer\" in data) {\n\n // let dataCustomer: CustomerUpdateProps[\"data\"] = {\n // customer: {\n // ...data.customer\n // }\n // }\n\n // await customerService.updateCustomer({ userId: Number(updateUserId), data: dataCustomer })\n\n // response = await customerService.getCustomer({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"operator\" && \"operator\" in data) {\n\n // let dataOperator: OperatorUpdateProps[\"data\"] = {\n // operator: {\n // ...data.operator\n // }\n // }\n\n // await operatorService.updateOperator({ userId: Number(updateUserId), data: dataOperator })\n\n // response = await operatorService.getOperator({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"administrator\" && \"administrator\" in data) {\n\n // let dataCustomer: AdministratorUpdateProps[\"data\"] = {\n // administrator: {\n // ...data.administrator\n // }\n // }\n\n // await administratorService.updateAdministrator({ userId: Number(updateUserId), data: dataCustomer })\n\n // // replace user prop\n // await userPropService.replaceUserProp({\n // userPropType: \"LOCATION_ID\",\n // data: {\n // userProp: {\n // userId: Number(updateUserId),\n // locationIds: data.props.locationIds\n // }\n // }\n // })\n\n // response = await administratorService.getAdministrator({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"worker\" && \"worker\" in data) {\n\n // let dataWorker: WorkerUpdateProps[\"data\"] = {\n // worker: {\n // ...data.worker\n // }\n // }\n\n // await workerService.updateWorker({ userId: Number(updateUserId), data: dataWorker })\n\n // // replace user prop\n // await userPropService.replaceUserProp({\n // userPropType: \"LOCATION_ID\",\n // data: {\n // userProp: {\n // userId: Number(updateUserId),\n // locationIds: data.props.locationIds\n // }\n // }\n // })\n\n // response = await workerService.getWorker({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"driver\" && \"driver\" in data) {\n\n // let dataDriver: DriverUpdateProps[\"data\"] = {\n // driver: {\n // ...data.driver\n // }\n // }\n\n // await driverService.updateDriver({ userId: Number(updateUserId), data: dataDriver })\n\n // // replace user prop\n // await userPropService.replaceUserProp({\n // userPropType: \"LOCATION_ID\",\n // data: {\n // userProp: {\n // userId: Number(updateUserId),\n // locationIds: data.props.locationIds\n // }\n // }\n // })\n\n // response = await driverService.getDriver({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"member\" && \"member\" in data) {\n\n // let dataMember: MemberUpdateProps[\"data\"] = {\n // member: {\n // ...data.member\n // }\n // }\n\n // await memberService.updateMember({ userId: Number(updateUserId), data: dataMember })\n\n // // replace user prop\n // // await userPropService.replaceUserProp({\n // // userPropType: \"LOCATION_ID\",\n // // data: {\n // // userProp: {\n // // userId: Number(updateUserId),\n // // locationIds: data.props.locationIds\n // // }\n // // }\n // // })\n\n // response = await memberService.getUserMember({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"agent\" && \"agent\" in data) {\n\n // let dataAgent: AgentUpdateProps[\"data\"] = {\n // agent: {\n // ...data.agent\n // }\n // }\n\n // await agentService.updateAgent({ userId: Number(updateUserId), data: dataAgent })\n\n // // replace user prop\n // // await userPropService.replaceUserProp({\n // // userPropType: \"LOCATION_ID\",\n // // data: {\n // // userProp: {\n // // userId: Number(updateUserId),\n // // locationIds: data.props.locationIds\n // // }\n // // }\n // // })\n\n // response = await agentService.getAgent({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // if (_userType === \"retailer\" && \"retailer\" in data) {\n\n // let dataRetailer: RetailerUpdateProps[\"data\"] = {\n // retailer: {\n // ...data.retailer\n // }\n // }\n\n // await retailerService.updateRetailer({ userId: Number(updateUserId), data: dataRetailer })\n\n // response = await retailerService.getRetailer({ id: Number(updateUserId), datatypes: [] })\n\n // }\n\n // return response\n // }\n\n const getUserMe = async () => {\n\n const id = userId\n\n const data = await userService.getUser({ id: userId, datatypes: [] })\n\n return data\n };\n\n const updateUserMe = async ({\n firstName = \"\",\n lastName = \"\",\n address = \"\"\n }: UserMeUpdateProps) => {\n\n const user = await userService.getUser({ id: Number(userId), datatypes: [] })\n\n // console.log('user', user)\n\n // check the userId is valid\n if (!user?.user_id) {\n throwError(`Invalid user id in auth token`)\n }\n\n // change user information\n await userModel.update({\n id: Number(userId),\n data: {\n [`${ModelUserFields.firstname}`]: firstName,\n [`${ModelUserFields.lastname}`]: lastName,\n [`${ModelUserFields.address}`]: address,\n }\n })\n\n return await userService.getUser({ id: Number(userId), datatypes: [] })\n\n }\n\n const removeUserMe = async () => {\n\n const response = await userService.suspendUsers({ ids: [BigInt(userId)] })\n\n return response\n };\n\n const changePasswordUserMe = async ({\n currentPassword,\n confirmPassword,\n newPassword\n }: UserMeChangePasswordProps) => {\n\n const accountId = rest?.accountId ?? 0\n const accountService = AccountService({ ...rest, isOperator: true })\n\n const user = await userService.getUser({ id: Number(userId), datatypes: [], includePassword: true })\n const account = await accountService.getAccount({ id: Number(accountId), datatypes: [] })\n\n // console.log('user', user)\n // console.log('account', account)\n\n // check the accountId / userId is valid\n if (!user?.user_id) {\n throwError(`Invalid user id in auth token`)\n }\n\n if (Object.keys(account).length <= 0) { // must have account id record\n throwError(`Invalid account id in auth token`)\n }\n\n // new password cannot same with current password\n if (newPassword === currentPassword) {\n throwError(`New and current password cannot be same`)\n }\n\n // new password must same with confirm\n if (newPassword !== confirmPassword) {\n throwError(`New and confirm password not matched`)\n }\n\n // validate the login password new format\n validateLoginPasswordFormat(newPassword);\n\n // check the current password\n try {\n const decryptedPass = await verifyPassword(currentPassword, user?.password)\n // console.log('decryptedPass', decryptedPass)\n\n if (!decryptedPass) {\n throw Error(`Invalid current password`)\n }\n\n } catch (error: any) {\n throwError(`Auth Token: ${error?.message}`)\n }\n\n // perform update credential\n const responseUser = await userService.replacePassword({\n id: Number(userId),\n data: {\n unhashLoginPassword: newPassword\n },\n isOperator: Boolean(userType === \"operator\")\n })\n\n return responseUser\n\n }\n\n const allowUserTypes = [\"any\"] as const\n\n const methodConfigs = {\n getUserMe: { fn: getUserMe, allowUserTypes, actionName: \"get user/me\" },\n updateUserMe: { fn: updateUserMe, allowUserTypes, actionName: \"update user/me\" },\n changePasswordUserMe: { fn: changePasswordUserMe, allowUserTypes, actionName: \"change password user/me\" },\n removeUserMe: { fn: removeUserMe, allowUserTypes, actionName: \"remove user/me\" },\n };\n\n return ServiceFactory(\"UserMeService\", rest, methodConfigs);\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"UserMeService.js","sourceRoot":"","sources":["../../../src/services/user/UserMeService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n UserModel,\n ModelUserFields\n} from \"@/models\";\n\nimport { verifyPassword, validateLoginPasswordFormat, DefaultServiceProps, throwError } from \"@/utils\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nimport { UserService, AccountService } from \"@/services\";\n\nimport { UserMeHook, FeatureUserMeSuccessUpdateProps, FeatureUserMeSuccessChangePasswordProps, FeatureUserMeSuccessRemoveProps } from \"@/features\"\n\nexport const userTypes = {\n operator: \"operator\",\n administrator: \"administrator\",\n worker: \"worker\",\n supplier: \"supplier\",\n customer: \"customer\",\n driver: \"driver\",\n retailer: \"retailer\",\n member: \"member\",\n agent: \"agent\",\n} as const\n\nexport type UserType = typeof userTypes[keyof typeof userTypes]\n\nexport type UserMeServiceProps = DefaultServiceProps & {\n // userType: UserType\n};\n\nexport type UserMeChangePasswordProps = {\n currentPassword: string\n newPassword: string\n confirmPassword: string\n};\n\nexport type UserMeUpdateProps = {\n firstName: string\n lastName: string\n address: string\n};\n\n// const getUpdatePayload = async (\n// userType: UserType,\n// data: UserMeUpdateProps[\"data\"],\n// contact: {\n// countryCode: number,\n// phoneNumber: string\n// }\n// ) => {\n\n// if (\"user\" in data) {\n\n// const newHashPassword = data?.user?.loginPassword ? await hashPassword(data.user.loginPassword) : \"\"\n\n// return {\n// [`${ModelUserFields.login_username}`]: data.user.loginUsername,\n// ...(newHashPassword ? { [`${ModelUserFields.login_password}`]: newHashPassword } : {}),\n// [`${ModelUserFields.address}`]: data.user.address,\n// [`${ModelUserFields.contact_country_code}`]: contact.countryCode,\n// [`${ModelUserFields.contact_phone_number}`]: contact.phoneNumber,\n// [`${ModelUserFields.email}`]: data.user.email,\n// [`${ModelUserFields.firstname}`]: data.user.firstname,\n// [`${ModelUserFields.lastname}`]: data.user.lastname,\n// [`${ModelUserFields.status}`]: Boolean(data.user.status),\n// [`${ModelUserFields.user_type}`]: `${userType}`\n// }\n// }\n\n// return false\n\n// }\n\nexport const UserMeService = (props: UserMeServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const userType = rest.actionUserType as UserType\n const userId = rest.actionUserId\n\n const userService = UserService({ ...rest, userType })\n const userModel = UserModel({ ...rest })\n\n const getUserMe = async () => {\n\n const id = userId\n\n const data = await userService.getUser({ id: userId, datatypes: [] })\n\n return data\n };\n\n const updateUserMe = async ({\n firstName = \"\",\n lastName = \"\",\n address = \"\"\n }: UserMeUpdateProps) => {\n\n const user = await userService.getUser({ id: Number(userId), datatypes: [] })\n\n // console.log('user', user)\n\n // check the userId is valid\n if (!user?.user_id) {\n throwError(`Invalid user id in auth token`)\n }\n\n // change user information\n await userModel.update({\n id: Number(userId),\n data: {\n [`${ModelUserFields.firstname}`]: firstName,\n [`${ModelUserFields.lastname}`]: lastName,\n [`${ModelUserFields.address}`]: address,\n }\n })\n\n const userMe = await userService.getUser({ id: Number(userId), datatypes: [] })\n\n // Call the consumer hook, if success\n if (UserMeHook.onSuccessUpdateMe) {\n await UserMeHook.onSuccessUpdateMe({\n defaultServiceProps: rest,\n callbackParams: {\n userMe\n }\n })\n }\n\n return userMe\n\n }\n\n const removeUserMe = async () => {\n\n const currentMe = await userService.getUser({ id: Number(userId), datatypes: [] })\n\n const response = await userService.suspendUsers({ ids: [BigInt(userId)] })\n\n // Call the consumer hook, if remove\n if (UserMeHook.onSuccessRemoveMe) {\n await UserMeHook.onSuccessRemoveMe({\n defaultServiceProps: rest,\n callbackParams: {\n userMe: currentMe\n }\n })\n }\n\n return response\n };\n\n const changePasswordUserMe = async ({\n currentPassword,\n confirmPassword,\n newPassword\n }: UserMeChangePasswordProps) => {\n\n const accountId = rest?.accountId ?? 0\n const accountService = AccountService({ ...rest, isOperator: true })\n\n const user = await userService.getUser({ id: Number(userId), datatypes: [], includePassword: true })\n const account = await accountService.getAccount({ id: Number(accountId), datatypes: [] })\n\n // console.log('user', user)\n // console.log('account', account)\n\n // check the accountId / userId is valid\n if (!user?.user_id) {\n throwError(`Invalid user id in auth token`)\n }\n\n if (Object.keys(account).length <= 0) { // must have account id record\n throwError(`Invalid account id in auth token`)\n }\n\n // new password cannot same with current password\n if (newPassword === currentPassword) {\n throwError(`New and current password cannot be same`)\n }\n\n // new password must same with confirm\n if (newPassword !== confirmPassword) {\n throwError(`New and confirm password not matched`)\n }\n\n // validate the login password new format\n validateLoginPasswordFormat(newPassword);\n\n // check the current password\n try {\n const decryptedPass = await verifyPassword(currentPassword, user?.password)\n // console.log('decryptedPass', decryptedPass)\n\n if (!decryptedPass) {\n throw Error(`Invalid current password`)\n }\n\n } catch (error: any) {\n throwError(`Auth Token: ${error?.message}`)\n }\n\n // perform update credential\n const responseUser = await userService.replacePassword({\n id: Number(userId),\n data: {\n unhashLoginPassword: newPassword\n },\n isOperator: Boolean(userType === \"operator\")\n })\n\n // Call the consumer hook, if change password\n if (UserMeHook.onSuccessChangePasswordMe) {\n\n // remove the password\n delete user.password\n\n await UserMeHook.onSuccessChangePasswordMe({\n defaultServiceProps: rest,\n callbackParams: {\n userMe: user\n }\n })\n }\n\n return responseUser\n\n }\n\n const allowUserTypes = [\"any\"] as const\n\n const methodConfigs = {\n getUserMe: { fn: getUserMe, allowUserTypes, actionName: \"get user/me\" },\n updateUserMe: { fn: updateUserMe, allowUserTypes, actionName: \"update user/me\" },\n changePasswordUserMe: { fn: changePasswordUserMe, allowUserTypes, actionName: \"change password user/me\" },\n removeUserMe: { fn: removeUserMe, allowUserTypes, actionName: \"remove user/me\" },\n };\n\n return ServiceFactory(\"UserMeService\", rest, methodConfigs);\n\n}\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureUtils.js","sourceRoot":"","sources":["../../src/utils/featureUtils.ts"],"names":[],"mappings":"","sourcesContent":["import { DefaultServiceProps } from \"./serviceUtils\";\n\nexport type FeatureCallbackProps<T> = {\n defaultServiceProps: DefaultServiceProps,\n callbackParams: T\n}"]}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { throwError, logError } from "./exceptionUtils";
|
|
|
9
9
|
export { getFormattedZodErrors, getFormattedZodErrorsIntoString, buildCommonStatusSchema } from "./zodUtils";
|
|
10
10
|
export type { DefaultServiceProps } from "./serviceUtils";
|
|
11
11
|
export { getDefaultServiceProps, generateServiceProps } from "./serviceUtils";
|
|
12
|
+
export type { FeatureCallbackProps } from "./featureUtils";
|
|
12
13
|
export { buildFullFieldName, groupPayloadInjectionFields } from "./injectionFieldUtils";
|
|
13
14
|
export { generateAuthToken, verifyAuthToken } from "./authUtils";
|
|
14
15
|
export { generateAccessKeyId, generateAccessKeySecret, hashAccessKeySecret, encryptAccessKeySecret, decryptAccessKeySecret } from "./accessKeyUtils";
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,iCAAsC;AAA7B,4GAAA,OAAO,OAAK;AACrB,+BAAyC;AAAhC,+GAAA,OAAO,OAAS;AACzB,iDAAsE;AAA7D,4GAAA,WAAW,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAC5C,yCAAsG;AAA7F,kGAAA,KAAK,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAChF,6CAA6L;AAApL,iHAAA,kBAAkB,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,2HAAA,4BAA4B,OAAA;AACrK,uCAA+C;AAAtC,mHAAA,OAAO,OAAU;AAC1B,mDAAwD;AAA/C,4GAAA,UAAU,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC7B,2CAA2C;AAC3C,wFAAwF;AACxF,mEAAmE;AACnE,mDAAmD;AACnD,uCAA4G;AAAnG,iHAAA,qBAAqB,OAAA;AAAE,2HAAA,+BAA+B,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAExF,+CAA6E;AAApE,sHAAA,sBAAsB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAC7B,iCAAsC;AAA7B,4GAAA,OAAO,OAAK;AACrB,+BAAyC;AAAhC,+GAAA,OAAO,OAAS;AACzB,iDAAsE;AAA7D,4GAAA,WAAW,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,4GAAA,WAAW,OAAA;AAC5C,yCAAsG;AAA7F,kGAAA,KAAK,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAChF,6CAA6L;AAApL,iHAAA,kBAAkB,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,0HAAA,2BAA2B,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,2HAAA,4BAA4B,OAAA;AACrK,uCAA+C;AAAtC,mHAAA,OAAO,OAAU;AAC1B,mDAAwD;AAA/C,4GAAA,UAAU,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC7B,2CAA2C;AAC3C,wFAAwF;AACxF,mEAAmE;AACnE,mDAAmD;AACnD,uCAA4G;AAAnG,iHAAA,qBAAqB,OAAA;AAAE,2HAAA,+BAA+B,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAExF,+CAA6E;AAApE,sHAAA,sBAAsB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAErD,6DAAuF;AAA9E,yHAAA,kBAAkB,OAAA;AAAE,kIAAA,2BAA2B,OAAA;AACxD,yCAAgE;AAAvD,8GAAA,iBAAiB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAC3C,mDAAoJ;AAA3I,qHAAA,mBAAmB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAC1H,iDAAsH;AAA7G,0HAAA,yBAAyB,OAAA;AAAE,4HAAA,2BAA2B,OAAA;AAAE,6GAAA,YAAY,OAAA;AAAE,+GAAA,cAAc,OAAA;AAC7F,iDAA6D;AAApD,4HAAA,2BAA2B,OAAA;AACpC,6DAA8F;AAArF,iIAAA,0BAA0B,OAAA;AAAE,iIAAA,0BAA0B,OAAA","sourcesContent":["export { getCoreConfiguration } from \"./coreConfigUtils\";\nexport { default as _ } from \"lodash\";\nexport { default as sharp } from \"sharp\";\nexport { HTTP_STATUS, sendError, sendSuccess } from \"./responseUtils\";\nexport { dayjs, getCurrentDateTime, getCurrentDateTimeISO, formatDisplayDateTime } from \"./dateUtils\";\nexport { validateWithSchema, validateMultipleSchemas, convertPayloadByTableSchema, validateModelFieldsWithData, createPublicScopeSchema, normalizePublicScopeFromBody } from \"./schemaUtils\";\nexport { default as logger } from \"./logUtils\";\nexport { throwError, logError } from \"./exceptionUtils\";\n// export { getSwmAuth } from \"./smwUtils\";\n// export { getRequestHeaderLocCode, checkRequestContentIsEmpty } from \"./requestUtils\";\n// export { storeJwtInMemory, getJwtFromMemory } from \"./jwtUtils\";\n// export { resizeImageBuffer } from \"./shapeUtils\"\nexport { getFormattedZodErrors, getFormattedZodErrorsIntoString, buildCommonStatusSchema } from \"./zodUtils\"\nexport type { DefaultServiceProps } from \"./serviceUtils\"\nexport { getDefaultServiceProps, generateServiceProps } from \"./serviceUtils\"\nexport type { FeatureCallbackProps } from \"./featureUtils\"\nexport { buildFullFieldName, groupPayloadInjectionFields } from \"./injectionFieldUtils\"\nexport { generateAuthToken, verifyAuthToken } from \"./authUtils\"\nexport { generateAccessKeyId, generateAccessKeySecret, hashAccessKeySecret, encryptAccessKeySecret, decryptAccessKeySecret } from \"./accessKeyUtils\"\nexport { loginPasswordFormatSchema, validateLoginPasswordFormat, hashPassword, verifyPassword } from \"./passwordUtils\"\nexport { generateFileThumbnailBuffer } from \"./fileThumbnail\"\nexport { validateFormatEmailAddress, validateFormatMobileNumber } from \"./validateFormatUtils\""]}
|
|
@@ -8,24 +8,8 @@ export type DefaultServiceProps = {
|
|
|
8
8
|
accessKey?: string;
|
|
9
9
|
accessKeyId?: string;
|
|
10
10
|
};
|
|
11
|
-
export declare const getDefaultServiceProps: (req: Request) =>
|
|
12
|
-
accountId: any;
|
|
13
|
-
actionUserId: any;
|
|
14
|
-
actionUserType: any;
|
|
15
|
-
authToken: any;
|
|
16
|
-
isOperator: any;
|
|
17
|
-
accessKey: any;
|
|
18
|
-
accessKeyId: any;
|
|
19
|
-
};
|
|
11
|
+
export declare const getDefaultServiceProps: (req: Request) => DefaultServiceProps;
|
|
20
12
|
export declare const generateServiceProps: ({ buildType, accessKey }: {
|
|
21
13
|
buildType?: "access_key";
|
|
22
14
|
accessKey: string;
|
|
23
|
-
}) => Promise<
|
|
24
|
-
accountId: number;
|
|
25
|
-
actionUserId: number;
|
|
26
|
-
actionUserType: any;
|
|
27
|
-
authToken: string;
|
|
28
|
-
accessKey: string;
|
|
29
|
-
accessKeyId: any;
|
|
30
|
-
isOperator: boolean;
|
|
31
|
-
}>;
|
|
15
|
+
}) => Promise<DefaultServiceProps>;
|
|
@@ -56,7 +56,6 @@ const generateServiceProps = async ({ buildType = "access_key", accessKey }) =>
|
|
|
56
56
|
accessKey,
|
|
57
57
|
accessKeyId: validatedAccessKey?.access_key_id ?? "",
|
|
58
58
|
isOperator: validatedAccessKey?.user_type === services_1.userTypes.operator,
|
|
59
|
-
// prisma
|
|
60
59
|
};
|
|
61
60
|
};
|
|
62
61
|
exports.generateServiceProps = generateServiceProps;
|