@things-factory/integration-marketplace 9.0.0-beta.79 → 9.0.0-beta.80
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-server/controllers/lazada/apis/echo.js +3 -3
- package/dist-server/controllers/lazada/apis/echo.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-order-items.js +30 -3
- package/dist-server/controllers/lazada/apis/get-store-order-items.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-orders.js +2 -2
- package/dist-server/controllers/lazada/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-product.js +1 -1
- package/dist-server/controllers/lazada/apis/get-store-product.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-products.js +2 -2
- package/dist-server/controllers/lazada/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-refund-orders.js +1 -1
- package/dist-server/controllers/lazada/apis/get-store-refund-orders.js.map +1 -1
- package/dist-server/controllers/lazada/apis/set-store-order-status-packed-by-marketplace.js +9 -3
- package/dist-server/controllers/lazada/apis/set-store-order-status-packed-by-marketplace.js.map +1 -1
- package/dist-server/controllers/lazada/client/lazada.js +16 -4
- package/dist-server/controllers/lazada/client/lazada.js.map +1 -1
- package/dist-server/controllers/lazada/client/signature.js +4 -1
- package/dist-server/controllers/lazada/client/signature.js.map +1 -1
- package/dist-server/controllers/lazada/platform-action.js +1 -1
- package/dist-server/controllers/lazada/platform-action.js.map +1 -1
- package/dist-server/controllers/magento/apis/echo.js +3 -3
- package/dist-server/controllers/magento/apis/echo.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-orders.js +2 -3
- package/dist-server/controllers/magento/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-product-categories.js +1 -2
- package/dist-server/controllers/magento/apis/get-store-product-categories.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-product.js +1 -1
- package/dist-server/controllers/magento/apis/get-store-product.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-products.js +9 -10
- package/dist-server/controllers/magento/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/magento/magento.js +3 -1
- package/dist-server/controllers/magento/magento.js.map +1 -1
- package/dist-server/controllers/shopee/apis/echo.js +3 -3
- package/dist-server/controllers/shopee/apis/echo.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-logistics-param.js +24 -14
- package/dist-server/controllers/shopee/apis/get-logistics-param.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-order.js +5 -2
- package/dist-server/controllers/shopee/apis/get-store-order.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-orders.js +2 -2
- package/dist-server/controllers/shopee/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-products.js +1 -1
- package/dist-server/controllers/shopee/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-refund-orders.js +2 -2
- package/dist-server/controllers/shopee/apis/get-store-refund-orders.js.map +1 -1
- package/dist-server/controllers/shopee/apis/init-logistics.js +5 -5
- package/dist-server/controllers/shopee/apis/init-logistics.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/echo.js +3 -3
- package/dist-server/controllers/shopee/apis2/echo.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-logistics-param.js +23 -13
- package/dist-server/controllers/shopee/apis2/get-logistics-param.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-shipping-document-result.js +1 -2
- package/dist-server/controllers/shopee/apis2/get-shipping-document-result.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-order-by-batch.js +36 -17
- package/dist-server/controllers/shopee/apis2/get-store-order-by-batch.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-order-document.js +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-order-document.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-order-transaction-details.js +7 -7
- package/dist-server/controllers/shopee/apis2/get-store-order-transaction-details.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-order.js +36 -17
- package/dist-server/controllers/shopee/apis2/get-store-order.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-orders.js +3 -1
- package/dist-server/controllers/shopee/apis2/get-store-orders.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-product.js +12 -15
- package/dist-server/controllers/shopee/apis2/get-store-product.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-store-refund-orders.js +2 -3
- package/dist-server/controllers/shopee/apis2/get-store-refund-orders.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/get-tracking-number.js +1 -1
- package/dist-server/controllers/shopee/apis2/get-tracking-number.js.map +1 -1
- package/dist-server/controllers/shopee/apis2/init-logistics.js +5 -5
- package/dist-server/controllers/shopee/apis2/init-logistics.js.map +1 -1
- package/dist-server/controllers/shopee/platform-action.js +4 -1
- package/dist-server/controllers/shopee/platform-action.js.map +1 -1
- package/dist-server/controllers/shopee/shopee.js +4 -2
- package/dist-server/controllers/shopee/shopee.js.map +1 -1
- package/dist-server/controllers/shopify/apis/echo.js +3 -3
- package/dist-server/controllers/shopify/apis/echo.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-order.js +3 -3
- package/dist-server/controllers/shopify/apis/get-store-order.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-orders.js +28 -29
- package/dist-server/controllers/shopify/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js +1 -2
- package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-products.js +10 -12
- package/dist-server/controllers/shopify/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/shopify/shopify.js +4 -2
- package/dist-server/controllers/shopify/shopify.js.map +1 -1
- package/dist-server/controllers/store-api/index.js +2 -2
- package/dist-server/controllers/store-api/index.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/echo.js +3 -3
- package/dist-server/controllers/tiktok/apis/echo.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/get-store-order-packages.js +3 -3
- package/dist-server/controllers/tiktok/apis/get-store-order-packages.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/get-store-order.js +6 -3
- package/dist-server/controllers/tiktok/apis/get-store-order.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/get-store-orders.js +3 -3
- package/dist-server/controllers/tiktok/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/get-store-product.js +9 -10
- package/dist-server/controllers/tiktok/apis/get-store-product.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/get-store-products.js +3 -3
- package/dist-server/controllers/tiktok/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/update-order-status.js +1 -1
- package/dist-server/controllers/tiktok/apis/update-order-status.js.map +1 -1
- package/dist-server/controllers/tiktok/client/signature.js +4 -1
- package/dist-server/controllers/tiktok/client/signature.js.map +1 -1
- package/dist-server/controllers/tiktok/client/tiktok.js +8 -3
- package/dist-server/controllers/tiktok/client/tiktok.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/echo.js +3 -3
- package/dist-server/controllers/woocommerce/apis/echo.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/get-store-products.js +11 -13
- package/dist-server/controllers/woocommerce/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-price.js +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-price.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js.map +1 -1
- package/dist-server/controllers/woocommerce/woocommerce.js +3 -1
- package/dist-server/controllers/woocommerce/woocommerce.js.map +1 -1
- package/dist-server/controllers/zalora/apis/echo.js +3 -3
- package/dist-server/controllers/zalora/apis/echo.js.map +1 -1
- package/dist-server/controllers/zalora/platform-action.js +2 -3
- package/dist-server/controllers/zalora/platform-action.js.map +1 -1
- package/dist-server/controllers/zalora/zalora/index.js +3 -1
- package/dist-server/controllers/zalora/zalora/index.js.map +1 -1
- package/dist-server/controllers/zalora/zalora/signature.js +13 -2
- package/dist-server/controllers/zalora/zalora/signature.js.map +1 -1
- package/dist-server/engine/connector/marketplace-connector.js +1 -1
- package/dist-server/engine/connector/marketplace-connector.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/create-marketplace-distributor.js +7 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/create-marketplace-distributor.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/index.js +7 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/marketplace-distributor-query.js +10 -10
- package/dist-server/graphql/resolvers/marketplace-distributor/marketplace-distributor-query.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/update-marketplace-distributor.js +6 -2
- package/dist-server/graphql/resolvers/marketplace-distributor/update-marketplace-distributor.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-distributor/update-multiple-marketplace-distributor.js +13 -4
- package/dist-server/graphql/resolvers/marketplace-distributor/update-multiple-marketplace-distributor.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-setting/create-marketplace-setting.js +6 -1
- package/dist-server/graphql/resolvers/marketplace-setting/create-marketplace-setting.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-setting/index.js +7 -1
- package/dist-server/graphql/resolvers/marketplace-setting/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-setting/marketplace-setting-query.js +11 -10
- package/dist-server/graphql/resolvers/marketplace-setting/marketplace-setting-query.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-setting/update-marketplace-setting.js +6 -2
- package/dist-server/graphql/resolvers/marketplace-setting/update-marketplace-setting.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-setting/update-multiple-marketplace-setting.js +13 -4
- package/dist-server/graphql/resolvers/marketplace-setting/update-multiple-marketplace-setting.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/create-marketplace-store.js +8 -1
- package/dist-server/graphql/resolvers/marketplace-store/create-marketplace-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/delete-marketplace-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/delete-marketplace-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/delete-marketplace-stores.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/delete-marketplace-stores.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/index.js +23 -2
- package/dist-server/graphql/resolvers/marketplace-store/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/lazada/deactivate-lazada-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/lazada/deactivate-lazada-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js +6 -2
- package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/lazada/index.js +7 -2
- package/dist-server/graphql/resolvers/marketplace-store/lazada/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js +4 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/deactivate-magento-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/deactivate-magento-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/index.js +7 -2
- package/dist-server/graphql/resolvers/marketplace-store/magento/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/deactivate-shopee-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/deactivate-shopee-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/index.js +7 -2
- package/dist-server/graphql/resolvers/marketplace-store/shopee/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopify/deactivate-shopify-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopify/deactivate-shopify-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopify/index.js +6 -2
- package/dist-server/graphql/resolvers/marketplace-store/shopify/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/update-marketplace-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/update-marketplace-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/update-multiple-marketplace-store.js +13 -4
- package/dist-server/graphql/resolvers/marketplace-store/update-multiple-marketplace-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/woocommerce/index.js +6 -2
- package/dist-server/graphql/resolvers/marketplace-store/woocommerce/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/deactivate-zalora-store.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/deactivate-zalora-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js +5 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/index.js +4 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/index.js +7 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/index.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/marketplace-transporter-query.js +10 -10
- package/dist-server/graphql/resolvers/marketplace-transporter/marketplace-transporter-query.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/update-marketplace-transporter.js +6 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/update-marketplace-transporter.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/update-multiple-marketplace-transporter.js +13 -4
- package/dist-server/graphql/resolvers/marketplace-transporter/update-multiple-marketplace-transporter.js.map +1 -1
- package/dist-server/graphql/resolvers/store-order/index.js +12 -2
- package/dist-server/graphql/resolvers/store-order/index.js.map +1 -1
- package/dist-server/graphql/resolvers/store-product/index.js +13 -2
- package/dist-server/graphql/resolvers/store-product/index.js.map +1 -1
- package/dist-server/routers/magento-private-router.js +4 -1
- package/dist-server/routers/magento-private-router.js.map +1 -1
- package/dist-server/routers/shopify-install-private-router.js +4 -1
- package/dist-server/routers/shopify-install-private-router.js.map +1 -1
- package/dist-server/routers/shopify-install-public-router.js +8 -2
- package/dist-server/routers/shopify-install-public-router.js.map +1 -1
- package/dist-server/routers/shopify-public-router.js +5 -1
- package/dist-server/routers/shopify-public-router.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"magento-private-router.js","sourceRoot":"","sources":["../../server/routers/magento-private-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { config } from '@things-factory/env'\nimport { getRedirectSubdomainPath, getRoutePrefixForDomainType, getRepository } from '@things-factory/shell'\n\nimport { Magento } from '../controllers/magento'\nimport { MarketplaceSetting, MarketplaceStore } from '../entities'\nimport { STORE_STATUS } from '../graphql/constants'\n\nconst debug = require('debug')('things-factory:integration-marketplace:magento-private-router')\n\nconst isPathBaseDomain = !config.get('subdomain')\n\nexport const magentoPrivateRouter = new Router()\n\nexport type MagentoAccessInfo = {\n store_base_url: string\n oauth_verifier: string\n oauth_consumer_key: string\n oauth_consumer_secret: string\n oauth_token?: string\n}\n\nmagentoPrivateRouter.get(\n `${isPathBaseDomain ? `/${getRoutePrefixForDomainType()}/:domain` : ''}/callback-magento-pre-install`,\n async (context, next) => {\n const { domain, user } = context.state\n\n const {\n store_base_url: storeURL,\n oauth_verifier: oauthVerifier,\n oauth_consumer_key: accessKey,\n oauth_consumer_secret: accessSecret\n } = process['MagentoInstallSessions']\n\n // const {\n // store_base_url: storeURL,\n // oauth_verifier: oauthVerifier,\n // oauth_consumer_key: accessKey,\n // oauth_consumer_secret: accessSecret\n // } = JSON.parse(accessInfoCookies)\n\n // const accessInfoCookies = context.cookies.get('magento-access-info')\n // const {\n // store_base_url: storeURL,\n // oauth_verifier: oauthVerifier,\n // oauth_consumer_key: accessKey,\n // oauth_consumer_secret: accessSecret\n // } = JSON.parse(accessInfoCookies)\n\n const magento = new Magento({ oauthConsumerKey: accessKey, oauthConsumerSecret: accessSecret, shop: storeURL })\n const requestURL: string = `${storeURL}oauth/token/request`\n const requestAuthorizationHeader: string = magento.makeRequestAuthorizationHeader(\n requestURL,\n 'POST',\n accessKey,\n accessSecret\n )\n\n const requestTokenResponse = await fetch(`${requestURL}`, {\n method: 'post',\n headers: {\n Authorization: requestAuthorizationHeader,\n 'Content-Type': 'application/json'\n }\n })\n\n if (!requestTokenResponse.ok) {\n const message = `failed to request token from magento : ${\n requestTokenResponse.status\n }, ${await requestTokenResponse.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n // const requestTokenResponse = new URLSearchParams(\n // 'oauth_token=4cqw0r7vo0s5goyyqnjb72sqj3vxwr0h&oauth_token_secret=rig3x3j5a9z5j6d4ubjwyf9f1l21itrr'\n // )\n\n var requestBody: any = requestTokenResponse.json()\n if (!requestBody.oauth_token) {\n const message = `failed to get oauth-token from magento : ${JSON.stringify(requestBody, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n const accessURL: string = `${storeURL}oauth/token/access`\n const accessAuthorizationHeader: string = magento.makeAccessAuthorizationHeader(\n accessURL,\n 'POST',\n accessKey,\n requestBody.oauth_token,\n oauthVerifier\n )\n const accessTokenResponse = await fetch(`${accessURL}`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: accessAuthorizationHeader\n },\n body: JSON.stringify({\n oauth_consumer_key: accessKey,\n oauth_consumer_secret: accessSecret\n })\n })\n\n if (!accessTokenResponse.ok) {\n const message = `failed to access token from magento : ${\n accessTokenResponse.status\n }, ${await accessTokenResponse.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n // const accessTokenResponse = new URLSearchParams(\n // 'oauth_token=0lnuajnuzeei2o8xcddii5us77xnb6v0&oauth_token_secret=1c6d2hycnir5ygf39fycs6zhtaagx8pd'\n // )\n\n var accessBody: any = accessTokenResponse.json()\n if (!accessBody.oauth_token) {\n const message = `failed to get access token from magento : ${JSON.stringify(accessBody, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n // need to get or save marketplace-store here\n var marketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: {\n domain: { id: domain.id },\n storeId: oauthVerifier,\n platform: 'magento'\n }\n })\n\n if (!marketplaceStore) {\n marketplaceStore = await getRepository(MarketplaceStore).save({\n domain,\n platform: 'magento',\n name: 'magento-' + oauthVerifier,\n storeId: oauthVerifier,\n countryCode: '',\n accessToken: accessBody.outh_token,\n refreshToken: '',\n accessInfo: accessBody,\n status: STORE_STATUS.ACTIVE,\n creator: user,\n updater: user\n })\n } else {\n var patch = {\n accessToken: accessBody.outh_token,\n refreshToken: '',\n accessInfo: accessBody,\n status: STORE_STATUS.ACTIVE,\n updater: user\n }\n\n marketplaceStore = await getRepository(MarketplaceStore).save({\n ...marketplaceStore,\n ...patch\n })\n }\n\n const marketplaceSettingCategories: any[] = ['stock_allocation', 'marketplace_order_max_weight']\n\n marketplaceSettingCategories.forEach(async category => {\n const foundMarketplaceSetting: MarketplaceSetting = await getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id }, domain: { id: domain.id }, category }\n })\n\n if (!foundMarketplaceSetting) {\n const marketplaceSetting = new MarketplaceSetting()\n marketplaceSetting.name = uuidv4()\n marketplaceSetting.marketplaceStore = marketplaceStore\n marketplaceSetting.value = '100'\n marketplaceSetting.category = category\n marketplaceSetting.domain = domain\n marketplaceSetting.creator = user\n await getRepository(MarketplaceSetting).save(marketplaceSetting)\n }\n })\n\n var message = 'success to activate'\n context.redirect(\n `${getRedirectSubdomainPath(context, domain)}marketplace-store-magento/${\n marketplaceStore.id\n }/connect-callback?status=${marketplaceStore.status}&message=${message}`\n )\n }\n)\n"]}
|
1
|
+
{"version":3,"file":"magento-private-router.js","sourceRoot":"","sources":["../../server/routers/magento-private-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { config } from '@things-factory/env'\nimport { getRedirectSubdomainPath, getRoutePrefixForDomainType, getRepository } from '@things-factory/shell'\n\nimport { Magento } from '../controllers/magento'\nimport { MarketplaceSetting, MarketplaceStore } from '../entities'\nimport { STORE_STATUS } from '../graphql/constants'\n\nconst debug = require('debug')('things-factory:integration-marketplace:magento-private-router')\n\nconst isPathBaseDomain = !config.get('subdomain')\n\nexport const magentoPrivateRouter = new Router()\n\nexport type MagentoAccessInfo = {\n store_base_url: string\n oauth_verifier: string\n oauth_consumer_key: string\n oauth_consumer_secret: string\n oauth_token?: string\n}\n\nmagentoPrivateRouter.get(\n `${isPathBaseDomain ? `/${getRoutePrefixForDomainType()}/:domain` : ''}/callback-magento-pre-install`,\n async (context, next) => {\n const { domain, user } = context.state\n\n const {\n store_base_url: storeURL,\n oauth_verifier: oauthVerifier,\n oauth_consumer_key: accessKey,\n oauth_consumer_secret: accessSecret\n } = process['MagentoInstallSessions']\n\n // const {\n // store_base_url: storeURL,\n // oauth_verifier: oauthVerifier,\n // oauth_consumer_key: accessKey,\n // oauth_consumer_secret: accessSecret\n // } = JSON.parse(accessInfoCookies)\n\n // const accessInfoCookies = context.cookies.get('magento-access-info')\n // const {\n // store_base_url: storeURL,\n // oauth_verifier: oauthVerifier,\n // oauth_consumer_key: accessKey,\n // oauth_consumer_secret: accessSecret\n // } = JSON.parse(accessInfoCookies)\n\n const magento = new Magento({ oauthConsumerKey: accessKey, oauthConsumerSecret: accessSecret, shop: storeURL })\n const requestURL: string = `${storeURL}oauth/token/request`\n const requestAuthorizationHeader: string = magento.makeRequestAuthorizationHeader(\n requestURL,\n 'POST',\n accessKey,\n accessSecret\n )\n\n const requestTokenResponse = await fetch(`${requestURL}`, {\n method: 'post',\n headers: {\n Authorization: requestAuthorizationHeader,\n 'Content-Type': 'application/json'\n }\n })\n\n if (!requestTokenResponse.ok) {\n const message = `failed to request token from magento : ${\n requestTokenResponse.status\n }, ${await requestTokenResponse.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n // const requestTokenResponse = new URLSearchParams(\n // 'oauth_token=4cqw0r7vo0s5goyyqnjb72sqj3vxwr0h&oauth_token_secret=rig3x3j5a9z5j6d4ubjwyf9f1l21itrr'\n // )\n\n var requestBody: any = requestTokenResponse.json()\n if (!requestBody.oauth_token) {\n const message = `failed to get oauth-token from magento : ${JSON.stringify(requestBody, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n const accessURL: string = `${storeURL}oauth/token/access`\n const accessAuthorizationHeader: string = magento.makeAccessAuthorizationHeader(\n accessURL,\n 'POST',\n accessKey,\n requestBody.oauth_token,\n oauthVerifier\n )\n const accessTokenResponse = await fetch(`${accessURL}`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: accessAuthorizationHeader\n },\n body: JSON.stringify({\n oauth_consumer_key: accessKey,\n oauth_consumer_secret: accessSecret\n })\n })\n\n if (!accessTokenResponse.ok) {\n const message = `failed to access token from magento : ${\n accessTokenResponse.status\n }, ${await accessTokenResponse.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n // const accessTokenResponse = new URLSearchParams(\n // 'oauth_token=0lnuajnuzeei2o8xcddii5us77xnb6v0&oauth_token_secret=1c6d2hycnir5ygf39fycs6zhtaagx8pd'\n // )\n\n var accessBody: any = accessTokenResponse.json()\n if (!accessBody.oauth_token) {\n const message = `failed to get access token from magento : ${JSON.stringify(accessBody, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n // need to get or save marketplace-store here\n var marketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: {\n domain: { id: domain.id },\n storeId: oauthVerifier,\n platform: 'magento'\n }\n })\n\n if (!marketplaceStore) {\n marketplaceStore = await getRepository(MarketplaceStore).save({\n domain,\n platform: 'magento',\n name: 'magento-' + oauthVerifier,\n storeId: oauthVerifier,\n countryCode: '',\n accessToken: accessBody.outh_token,\n refreshToken: '',\n accessInfo: accessBody,\n status: STORE_STATUS.ACTIVE,\n creator: user,\n updater: user\n })\n } else {\n var patch = {\n accessToken: accessBody.outh_token,\n refreshToken: '',\n accessInfo: accessBody,\n status: STORE_STATUS.ACTIVE,\n updater: user\n }\n\n marketplaceStore = await getRepository(MarketplaceStore).save({\n ...marketplaceStore,\n ...patch\n })\n }\n\n const marketplaceSettingCategories: any[] = ['stock_allocation', 'marketplace_order_max_weight']\n\n marketplaceSettingCategories.forEach(async category => {\n const foundMarketplaceSetting: MarketplaceSetting = await getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id }, domain: { id: domain.id }, category }\n })\n\n if (!foundMarketplaceSetting) {\n const marketplaceSetting = new MarketplaceSetting()\n marketplaceSetting.name = uuidv4()\n marketplaceSetting.marketplaceStore = marketplaceStore\n marketplaceSetting.value = '100'\n marketplaceSetting.category = category\n marketplaceSetting.domain = domain\n marketplaceSetting.creator = user\n await getRepository(MarketplaceSetting).save(marketplaceSetting)\n }\n })\n\n var message = 'success to activate'\n context.redirect(\n `${getRedirectSubdomainPath(context, domain)}marketplace-store-magento/${\n marketplaceStore.id\n }/connect-callback?status=${marketplaceStore.status}&message=${message}`\n )\n }\n)\n"]}
|
@@ -52,7 +52,10 @@ exports.shopifyInstallPrivateRouter.get(`${isPathBaseDomain ? `/${(0, shell_1.ge
|
|
52
52
|
status: constants_1.STORE_STATUS.ACTIVE,
|
53
53
|
updater: user
|
54
54
|
};
|
55
|
-
marketplaceStore = await (0, shell_1.getRepository)(entities_1.MarketplaceStore).save(
|
55
|
+
marketplaceStore = await (0, shell_1.getRepository)(entities_1.MarketplaceStore).save({
|
56
|
+
...marketplaceStore,
|
57
|
+
...patch
|
58
|
+
});
|
56
59
|
}
|
57
60
|
const marketplaceSettingCategories = ['stock_allocation', 'marketplace_order_max_weight'];
|
58
61
|
marketplaceSettingCategories.forEach(async (category) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shopify-install-private-router.js","sourceRoot":"","sources":["../../server/routers/shopify-install-private-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,+BAAmC;AAEnC,6CAA4C;AAC5C,iDAA4G;AAE5G,0CAAkE;AAClE,oDAAmD;AAEnD,MAAM,gBAAgB,GAAG,CAAC,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,uEAAuE,CAAC,CAAA;AAE1F,QAAA,2BAA2B,GAAG,IAAI,oBAAM,EAAE,CAAA;AAEvD,mCAA2B,CAAC,GAAG,CAC7B,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAA,mCAA2B,GAAE,UAAU,CAAC,CAAC,CAAC,EAAE,gCAAgC,EACtG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACtB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEtC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACjE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;IAElD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,EAAE;QAC9C,MAAM;QACN,QAAQ,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,6CAA6C;IAC7C,IAAI,gBAAgB,GAAG,MAAM,IAAA,qBAAa,EAAC,2BAAgB,CAAC,CAAC,OAAO,CAAC;QACnE,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,MAAM,IAAA,qBAAa,EAAC,2BAAgB,CAAC,CAAC,IAAI,CAAC;YAC5D,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,UAAU,GAAG,IAAI;YACvB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,EAAE;YACf,WAAW;YACX,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,wBAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,GAAG;YACV,WAAW;YACX,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,wBAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI;SACd,CAAA;QAED,gBAAgB,GAAG,MAAM,IAAA,qBAAa,EAAC,2BAAgB,CAAC,CAAC,IAAI,
|
1
|
+
{"version":3,"file":"shopify-install-private-router.js","sourceRoot":"","sources":["../../server/routers/shopify-install-private-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { config } from '@things-factory/env'\nimport { getRedirectSubdomainPath, getRoutePrefixForDomainType, getRepository } from '@things-factory/shell'\n\nimport { MarketplaceSetting, MarketplaceStore } from '../entities'\nimport { STORE_STATUS } from '../graphql/constants'\n\nconst isPathBaseDomain = !config.get('subdomain')\n\nconst debug = require('debug')('things-factory:integration-marketplace:shopify-install-private-router')\n\nexport const shopifyInstallPrivateRouter = new Router()\n\nshopifyInstallPrivateRouter.get(\n `${isPathBaseDomain ? `/${getRoutePrefixForDomainType()}/:domain` : ''}/callback-shopify-post-install`,\n async (context, next) => {\n const { secure } = context\n const { domain, user } = context.state\n\n const shopifyCookie = context.cookies.get('shopify-access-token')\n const { access_token: accessToken, shop: shopUrl } = JSON.parse(shopifyCookie)\n const shop = shopUrl.replace('.myshopify.com', '')\n\n context.cookies.set('shopify-access-token', '', {\n secure,\n httpOnly: true\n })\n\n // need to get or save marketplace-store here\n var marketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: {\n domain: { id: domain.id },\n storeId: shop,\n platform: 'shopify'\n }\n })\n\n if (!marketplaceStore) {\n marketplaceStore = await getRepository(MarketplaceStore).save({\n domain: { id: domain.id },\n platform: 'shopify',\n name: 'shopify-' + shop,\n storeId: shop,\n countryCode: '',\n accessToken,\n refreshToken: '',\n accessInfo: shopifyCookie,\n status: STORE_STATUS.ACTIVE,\n creator: user,\n updater: user\n })\n } else {\n var patch = {\n accessToken,\n refreshToken: '',\n accessInfo: shopifyCookie,\n status: STORE_STATUS.ACTIVE,\n updater: user\n }\n\n marketplaceStore = await getRepository(MarketplaceStore).save({\n ...marketplaceStore,\n ...patch\n })\n }\n\n const marketplaceSettingCategories: any[] = ['stock_allocation', 'marketplace_order_max_weight']\n\n marketplaceSettingCategories.forEach(async category => {\n const foundMarketplaceSetting: MarketplaceSetting = await getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id }, domain: { id: domain.id }, category }\n })\n\n if (!foundMarketplaceSetting) {\n const marketplaceSetting = new MarketplaceSetting()\n marketplaceSetting.name = uuidv4()\n marketplaceSetting.marketplaceStore = marketplaceStore\n marketplaceSetting.value = '100'\n marketplaceSetting.category = category\n marketplaceSetting.domain = domain\n marketplaceSetting.creator = user\n await getRepository(MarketplaceSetting).save(marketplaceSetting)\n }\n })\n\n var message = 'success to activate'\n context.redirect(\n `${getRedirectSubdomainPath(context, domain)}marketplace-store-shopify/${\n marketplaceStore.id\n }/connect-callback?status=${marketplaceStore.status}&message=${message}`\n )\n }\n)\n"]}
|
@@ -90,7 +90,10 @@ exports.shopifyInstallPublicRouter.get('/callback-shopify-install', async (conte
|
|
90
90
|
}
|
91
91
|
}
|
92
92
|
*/
|
93
|
-
context.cookies.set('shopify-access-token', JSON.stringify(
|
93
|
+
context.cookies.set('shopify-access-token', JSON.stringify({
|
94
|
+
shop,
|
95
|
+
...body
|
96
|
+
}), {
|
94
97
|
secure,
|
95
98
|
httpOnly: true
|
96
99
|
});
|
@@ -182,7 +185,10 @@ exports.shopifyInstallPublicRouter.get('/callback-shopify-install-private', asyn
|
|
182
185
|
}
|
183
186
|
}
|
184
187
|
*/
|
185
|
-
context.cookies.set('shopify-access-token', JSON.stringify(
|
188
|
+
context.cookies.set('shopify-access-token', JSON.stringify({
|
189
|
+
shop,
|
190
|
+
...body
|
191
|
+
}), {
|
186
192
|
secure,
|
187
193
|
httpOnly: true
|
188
194
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shopify-install-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-install-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\n\nimport { config } from '@things-factory/env'\nimport { getRepository, getUrlFromContext } from '@things-factory/shell'\n\nimport { Shopify } from '../controllers/shopify'\nimport { MarketplaceStore } from '../entities'\n\nconst debug = require('debug')('things-factory:integration-marketplace:shopify-install-public-router')\n\nexport const shopifyInstallPublicRouter = new Router()\n\nshopifyInstallPublicRouter.get('/install-shopify', async (context, next) => {\n const shopifyConfig = config.get('marketplaceIntegrationShopify', {})\n const { apiKey, apiSecret } = shopifyConfig\n\n const { secure } = context\n const { shop: shopUrl } = context.query\n\n if (!shopUrl) {\n context.throw(400, 'shop not found from the request')\n }\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n const redirectUrl = getUrlFromContext(context, '/callback-shopify-install')\n const state = shopify.makeVerificationTokenForNonce()\n\n const authUrl = shopify.buildAuthURL(redirectUrl, state)\n\n context.cookies.set('shopify-install-state', state, {\n secure,\n httpOnly: true\n })\n\n context.redirect(authUrl)\n})\n\nshopifyInstallPublicRouter.get('/callback-shopify-install', async (context, next) => {\n const shopifyConfig = config.get('marketplaceIntegrationShopify', {})\n const { apiKey, apiSecret } = shopifyConfig\n\n const { secure } = context\n const { shop: shopUrl, code, state } = context.query\n const stateCookie = context.cookies.get('shopify-install-state')\n\n if (state !== stateCookie) {\n context.throw(403, 'shopify install state could not be verified')\n }\n\n context.cookies.set('shopify-install-state', '', {\n secure,\n httpOnly: true\n })\n\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n\n const response = await fetch(`https://${shop}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (!response.ok) {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n var body = await response.json()\n if (!body.access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n /* body should be like this\n {\n \"access_token\": \"f85632530bf277ec9ac6f649fc327f17\",\n \"scope\": \"write_orders,read_customers\",\n \"expires_in\": 86399,\n \"associated_user_scope\": \"write_orders\",\n \"associated_user\": {\n \"id\": 902541635,\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"email\": \"john@example.com\",\n \"email_verified\": true,\n \"account_owner\": true,\n \"locale\": \"en\",\n \"collaborator\": false\n }\n }\n */\n\n context.cookies.set(\n 'shopify-access-token',\n JSON.stringify({\n shop,\n ...body\n }),\n {\n secure,\n httpOnly: true\n }\n )\n\n context.redirect(getUrlFromContext(context, '/callback-shopify-post-install'))\n})\n\nshopifyInstallPublicRouter.get('/install-shopify-private', async (context, next) => {\n const { secure } = context\n const { shop: shopUrl } = context.query\n debug('shop', shopUrl)\n if (!shopUrl) {\n context.throw(400, 'shop not found from the request')\n }\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeURL: shopUrl }\n })\n\n if (!marketplaceStore) context.throw(400, 'marketplace store not found')\n\n const { accessKey: apiKey, accessSecret: apiSecret } = marketplaceStore\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n const redirectUrl = getUrlFromContext(context, '/callback-shopify-install-private')\n const state = shopify.makeVerificationTokenForNonce()\n\n const authUrl = shopify.buildAuthURL(redirectUrl, state)\n\n context.cookies.set('shopify-install-state', state, {\n secure,\n httpOnly: true\n })\n\n context.redirect(authUrl)\n})\n\nshopifyInstallPublicRouter.get('/callback-shopify-install-private', async (context, next) => {\n const { secure } = context\n const { shop: shopUrl, code, state } = context.query\n const stateCookie = context.cookies.get('shopify-install-state')\n\n if (state !== stateCookie) {\n context.throw(403, 'shopify install state could not be verified')\n }\n\n context.cookies.set('shopify-install-state', '', {\n secure,\n httpOnly: true\n })\n\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeURL: shopUrl }\n })\n\n if (!marketplaceStore) context.throw(400, 'marketplace store not found')\n\n const { accessKey: apiKey, accessSecret: apiSecret } = marketplaceStore\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n\n const response = await fetch(`https://${shop}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (!response.ok) {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n var body = await response.json()\n if (!body.access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n /* body should be like this\n {\n \"access_token\": \"f85632530bf277ec9ac6f649fc327f17\",\n \"scope\": \"write_orders,read_customers\",\n \"expires_in\": 86399,\n \"associated_user_scope\": \"write_orders\",\n \"associated_user\": {\n \"id\": 902541635,\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"email\": \"john@example.com\",\n \"email_verified\": true,\n \"account_owner\": true,\n \"locale\": \"en\",\n \"collaborator\": false\n }\n }\n */\n\n context.cookies.set(\n 'shopify-access-token',\n JSON.stringify({\n shop,\n ...body\n }),\n {\n secure,\n httpOnly: true\n }\n )\n\n context.redirect(getUrlFromContext(context, '/callback-shopify-post-install'))\n})\n"]}
|
1
|
+
{"version":3,"file":"shopify-install-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-install-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\n\nimport { config } from '@things-factory/env'\nimport { getRepository, getUrlFromContext } from '@things-factory/shell'\n\nimport { Shopify } from '../controllers/shopify'\nimport { MarketplaceStore } from '../entities'\n\nconst debug = require('debug')('things-factory:integration-marketplace:shopify-install-public-router')\n\nexport const shopifyInstallPublicRouter = new Router()\n\nshopifyInstallPublicRouter.get('/install-shopify', async (context, next) => {\n const shopifyConfig = config.get('marketplaceIntegrationShopify', {})\n const { apiKey, apiSecret } = shopifyConfig\n\n const { secure } = context\n const { shop: shopUrl } = context.query\n\n if (!shopUrl) {\n context.throw(400, 'shop not found from the request')\n }\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n const redirectUrl = getUrlFromContext(context, '/callback-shopify-install')\n const state = shopify.makeVerificationTokenForNonce()\n\n const authUrl = shopify.buildAuthURL(redirectUrl, state)\n\n context.cookies.set('shopify-install-state', state, {\n secure,\n httpOnly: true\n })\n\n context.redirect(authUrl)\n})\n\nshopifyInstallPublicRouter.get('/callback-shopify-install', async (context, next) => {\n const shopifyConfig = config.get('marketplaceIntegrationShopify', {})\n const { apiKey, apiSecret } = shopifyConfig\n\n const { secure } = context\n const { shop: shopUrl, code, state } = context.query\n const stateCookie = context.cookies.get('shopify-install-state')\n\n if (state !== stateCookie) {\n context.throw(403, 'shopify install state could not be verified')\n }\n\n context.cookies.set('shopify-install-state', '', {\n secure,\n httpOnly: true\n })\n\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n\n const response = await fetch(`https://${shop}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (!response.ok) {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n var body = await response.json()\n if (!body.access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n /* body should be like this\n {\n \"access_token\": \"f85632530bf277ec9ac6f649fc327f17\",\n \"scope\": \"write_orders,read_customers\",\n \"expires_in\": 86399,\n \"associated_user_scope\": \"write_orders\",\n \"associated_user\": {\n \"id\": 902541635,\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"email\": \"john@example.com\",\n \"email_verified\": true,\n \"account_owner\": true,\n \"locale\": \"en\",\n \"collaborator\": false\n }\n }\n */\n\n context.cookies.set(\n 'shopify-access-token',\n JSON.stringify({\n shop,\n ...body\n }),\n {\n secure,\n httpOnly: true\n }\n )\n\n context.redirect(getUrlFromContext(context, '/callback-shopify-post-install'))\n})\n\nshopifyInstallPublicRouter.get('/install-shopify-private', async (context, next) => {\n const { secure } = context\n const { shop: shopUrl } = context.query\n debug('shop', shopUrl)\n if (!shopUrl) {\n context.throw(400, 'shop not found from the request')\n }\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeURL: shopUrl }\n })\n\n if (!marketplaceStore) context.throw(400, 'marketplace store not found')\n\n const { accessKey: apiKey, accessSecret: apiSecret } = marketplaceStore\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n const redirectUrl = getUrlFromContext(context, '/callback-shopify-install-private')\n const state = shopify.makeVerificationTokenForNonce()\n\n const authUrl = shopify.buildAuthURL(redirectUrl, state)\n\n context.cookies.set('shopify-install-state', state, {\n secure,\n httpOnly: true\n })\n\n context.redirect(authUrl)\n})\n\nshopifyInstallPublicRouter.get('/callback-shopify-install-private', async (context, next) => {\n const { secure } = context\n const { shop: shopUrl, code, state } = context.query\n const stateCookie = context.cookies.get('shopify-install-state')\n\n if (state !== stateCookie) {\n context.throw(403, 'shopify install state could not be verified')\n }\n\n context.cookies.set('shopify-install-state', '', {\n secure,\n httpOnly: true\n })\n\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeURL: shopUrl }\n })\n\n if (!marketplaceStore) context.throw(400, 'marketplace store not found')\n\n const { accessKey: apiKey, accessSecret: apiSecret } = marketplaceStore\n const shop = shopUrl.replace('.myshopify.com', '')\n\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n if (!shopify.isValidSignature(context.query)) {\n context.throw(400, 'HMAC validation failed')\n }\n\n const response = await fetch(`https://${shop}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (!response.ok) {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n context.throw(500, message)\n }\n\n var body = await response.json()\n if (!body.access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n context.throw(500, message)\n }\n\n /* body should be like this\n {\n \"access_token\": \"f85632530bf277ec9ac6f649fc327f17\",\n \"scope\": \"write_orders,read_customers\",\n \"expires_in\": 86399,\n \"associated_user_scope\": \"write_orders\",\n \"associated_user\": {\n \"id\": 902541635,\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"email\": \"john@example.com\",\n \"email_verified\": true,\n \"account_owner\": true,\n \"locale\": \"en\",\n \"collaborator\": false\n }\n }\n */\n\n context.cookies.set(\n 'shopify-access-token',\n JSON.stringify({\n shop,\n ...body\n }),\n {\n secure,\n httpOnly: true\n }\n )\n\n context.redirect(getUrlFromContext(context, '/callback-shopify-post-install'))\n})\n"]}
|
@@ -67,7 +67,11 @@ exports.shopifyPublicRouter.get('/callback-shopify', async (context, next) => {
|
|
67
67
|
status: constants_1.STORE_STATUS.ACTIVE
|
68
68
|
};
|
69
69
|
var user = await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: userId });
|
70
|
-
store = await (0, shell_1.getRepository)(entities_1.MarketplaceStore).save(
|
70
|
+
store = await (0, shell_1.getRepository)(entities_1.MarketplaceStore).save({
|
71
|
+
...store,
|
72
|
+
...patch,
|
73
|
+
updater: user
|
74
|
+
});
|
71
75
|
const marketplaceSetting = new entities_1.MarketplaceSetting();
|
72
76
|
marketplaceSetting.name = (0, uuid_1.v4)();
|
73
77
|
marketplaceSetting.marketplaceStore = store;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shopify-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { User, VerificationToken, VerificationTokenType } from '@things-factory/auth-base'\nimport { config } from '@things-factory/env'\nimport { getRedirectSubdomainPath, getRepository } from '@things-factory/shell'\n\nimport { StoreAPI } from '../controllers/store-api'\nimport { MarketplaceSetting, MarketplaceStore } from '../entities'\nimport { STORE_STATUS } from '../graphql/constants'\n\nconst shopifyConfig = config.get('marketplaceIntegrationShopify', {})\nconst { apiKey, apiSecret } = shopifyConfig\n\nconst debug = require('debug')('things-factory:integration-marketplace:shopify-public-router')\n\nexport const shopifyPublicRouter = new Router()\n\nshopifyPublicRouter.get('/callback-shopify', async (context, next) => {\n try {\n // https://example.org/some/redirect/uri?code={authorization_code}&hmac=da9d83c171400a41f8db91a950508985×tamp=1409617544&state={nonce}&shop={hostname}\n const { code, hmac, timestamp, state: nonce, shop: hostname } = context.query\n\n const verificationTokenRepository = getRepository(VerificationToken)\n\n var verification: VerificationToken = await verificationTokenRepository.findOne({\n where: {\n token: nonce,\n type: VerificationTokenType.REQUEST_ACCESS_TOKEN\n }\n })\n\n const { userId, suppliment: marketplaceStoreId } = verification\n\n await verificationTokenRepository.delete({\n userId,\n token: nonce,\n type: VerificationTokenType.REQUEST_ACCESS_TOKEN\n })\n\n var store = await StoreAPI.getMarketplaceStore(marketplaceStoreId)\n const storeId = store.storeId\n\n const response = await fetch(`https://${storeId}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (response.ok) {\n var body = await response.json()\n var { access_token } = body\n if (!access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n throw new Error(message)\n }\n } else {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n throw new Error(message)\n }\n\n var patch = {\n accessToken: access_token,\n refreshToken: '',\n accessInfo: JSON.stringify(body, null, 2),\n storeId: storeId,\n status: STORE_STATUS.ACTIVE\n }\n\n var user = await getRepository(User).findOneBy({ id: userId })\n\n store = await getRepository(MarketplaceStore).save({\n ...store,\n ...patch,\n updater: user\n })\n\n const marketplaceSetting = new MarketplaceSetting()\n marketplaceSetting.name = uuidv4()\n marketplaceSetting.marketplaceStore = store\n marketplaceSetting.value = '100'\n marketplaceSetting.category = 'stock_allocation'\n marketplaceSetting.domain = store.domain\n marketplaceSetting.creator = store.creator\n await getRepository(MarketplaceSetting).save(marketplaceSetting)\n\n var message = 'success to activate'\n context.redirect(\n `${getRedirectSubdomainPath(context, store.domain)}marketplace-store-shopify/${\n store.id\n }/connect-callback?status=${store.status}&message=${message}`\n )\n } catch (err) {\n var message: string = err.message\n\n if (store) {\n context.redirect(\n `${getRedirectSubdomainPath(context, store.domain)}marketplace-store-shopify/${\n store.id\n }/connect-callback?status=${store.status}&message=${message}`\n )\n return\n }\n\n throw err\n }\n})\n\nshopifyPublicRouter.post('/webhook-shopify/customers/redact', async (context, next) => {\n // When a store owner requests deletion of data on behalf of a customer,\n // Shopify sends a payload on the customers/redact topic to the apps installed on that store.\n // If the customer hasn't placed an order in the past six months,\n // then Shopify sends the payload 10 days after their request.\n // Otherwise, the the request will be withheld until 6 months have passed.\n // If your app has been granted access to the store's customers or orders,\n // then you receive a redaction request webhook with the resource IDs that you need to redact or delete.\n // In some cases, a customer record contains only the customer's email address.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\",\n // \"customer\": {\n // \"id\": 191167,\n // \"email\": \"john@email.com\",\n // \"phone\": \"555-625-1199\"\n // },\n // \"orders_to_redact\": [299938, 280263, 220458]\n // }\n\n context.status = 200\n})\n\nshopifyPublicRouter.post('/webhook-shopify/shop/redact', async (context, next) => {\n // 48 hours after a store owner uninstalls your app,\n // Shopify sends you a shop/redact webhook.\n // This webhook provides the store's shop_id and shop_domain so that you can erase the customer information\n // for that store from your database.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\"\n // }\n\n context.status = 200\n})\n\nshopifyPublicRouter.post('/webhook-shopify/customers/data_request', async (context, next) => {\n // When a customer requests their data from a store owner,\n // Shopify sends a payload on the customers/data_request topic to the apps installed on that store.\n // If your app has been granted access to customers or orders,\n // then you receive a data request webhook with the resource IDs of the data that you need to provide to the store owner.\n // It's your responsibility to provide this data to the store owner directly.\n // In some cases, a customer record contains only the customer's email address.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\",\n // \"orders_requested\": [299938, 280263, 220458],\n // \"customer\": {\n // \"id\": 191167,\n // \"email\": \"john@email.com\",\n // \"phone\": \"555-625-1199\"\n // },\n // \"data_request\": {\n // \"id\": 9999\n // }\n // }\n\n context.status = 200\n})\n"]}
|
1
|
+
{"version":3,"file":"shopify-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { User, VerificationToken, VerificationTokenType } from '@things-factory/auth-base'\nimport { config } from '@things-factory/env'\nimport { getRedirectSubdomainPath, getRepository } from '@things-factory/shell'\n\nimport { StoreAPI } from '../controllers/store-api'\nimport { MarketplaceSetting, MarketplaceStore } from '../entities'\nimport { STORE_STATUS } from '../graphql/constants'\n\nconst shopifyConfig = config.get('marketplaceIntegrationShopify', {})\nconst { apiKey, apiSecret } = shopifyConfig\n\nconst debug = require('debug')('things-factory:integration-marketplace:shopify-public-router')\n\nexport const shopifyPublicRouter = new Router()\n\nshopifyPublicRouter.get('/callback-shopify', async (context, next) => {\n try {\n // https://example.org/some/redirect/uri?code={authorization_code}&hmac=da9d83c171400a41f8db91a950508985×tamp=1409617544&state={nonce}&shop={hostname}\n const { code, hmac, timestamp, state: nonce, shop: hostname } = context.query\n\n const verificationTokenRepository = getRepository(VerificationToken)\n\n var verification: VerificationToken = await verificationTokenRepository.findOne({\n where: {\n token: nonce,\n type: VerificationTokenType.REQUEST_ACCESS_TOKEN\n }\n })\n\n const { userId, suppliment: marketplaceStoreId } = verification\n\n await verificationTokenRepository.delete({\n userId,\n token: nonce,\n type: VerificationTokenType.REQUEST_ACCESS_TOKEN\n })\n\n var store = await StoreAPI.getMarketplaceStore(marketplaceStoreId)\n const storeId = store.storeId\n\n const response = await fetch(`https://${storeId}.myshopify.com/admin/oauth/access_token`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n client_id: apiKey,\n client_secret: apiSecret,\n code\n })\n })\n\n if (response.ok) {\n var body = await response.json()\n var { access_token } = body\n if (!access_token) {\n const message = `failed to get access-token from shopify : ${JSON.stringify(body, null, 2)}`\n debug(message)\n throw new Error(message)\n }\n } else {\n const message = `failed to get access-token from shopify : ${response.status}, ${await response.text()}`\n debug(message)\n throw new Error(message)\n }\n\n var patch = {\n accessToken: access_token,\n refreshToken: '',\n accessInfo: JSON.stringify(body, null, 2),\n storeId: storeId,\n status: STORE_STATUS.ACTIVE\n }\n\n var user = await getRepository(User).findOneBy({ id: userId })\n\n store = await getRepository(MarketplaceStore).save({\n ...store,\n ...patch,\n updater: user\n })\n\n const marketplaceSetting = new MarketplaceSetting()\n marketplaceSetting.name = uuidv4()\n marketplaceSetting.marketplaceStore = store\n marketplaceSetting.value = '100'\n marketplaceSetting.category = 'stock_allocation'\n marketplaceSetting.domain = store.domain\n marketplaceSetting.creator = store.creator\n await getRepository(MarketplaceSetting).save(marketplaceSetting)\n\n var message = 'success to activate'\n context.redirect(\n `${getRedirectSubdomainPath(context, store.domain)}marketplace-store-shopify/${\n store.id\n }/connect-callback?status=${store.status}&message=${message}`\n )\n } catch (err) {\n var message: string = err.message\n\n if (store) {\n context.redirect(\n `${getRedirectSubdomainPath(context, store.domain)}marketplace-store-shopify/${\n store.id\n }/connect-callback?status=${store.status}&message=${message}`\n )\n return\n }\n\n throw err\n }\n})\n\nshopifyPublicRouter.post('/webhook-shopify/customers/redact', async (context, next) => {\n // When a store owner requests deletion of data on behalf of a customer,\n // Shopify sends a payload on the customers/redact topic to the apps installed on that store.\n // If the customer hasn't placed an order in the past six months,\n // then Shopify sends the payload 10 days after their request.\n // Otherwise, the the request will be withheld until 6 months have passed.\n // If your app has been granted access to the store's customers or orders,\n // then you receive a redaction request webhook with the resource IDs that you need to redact or delete.\n // In some cases, a customer record contains only the customer's email address.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\",\n // \"customer\": {\n // \"id\": 191167,\n // \"email\": \"john@email.com\",\n // \"phone\": \"555-625-1199\"\n // },\n // \"orders_to_redact\": [299938, 280263, 220458]\n // }\n\n context.status = 200\n})\n\nshopifyPublicRouter.post('/webhook-shopify/shop/redact', async (context, next) => {\n // 48 hours after a store owner uninstalls your app,\n // Shopify sends you a shop/redact webhook.\n // This webhook provides the store's shop_id and shop_domain so that you can erase the customer information\n // for that store from your database.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\"\n // }\n\n context.status = 200\n})\n\nshopifyPublicRouter.post('/webhook-shopify/customers/data_request', async (context, next) => {\n // When a customer requests their data from a store owner,\n // Shopify sends a payload on the customers/data_request topic to the apps installed on that store.\n // If your app has been granted access to customers or orders,\n // then you receive a data request webhook with the resource IDs of the data that you need to provide to the store owner.\n // It's your responsibility to provide this data to the store owner directly.\n // In some cases, a customer record contains only the customer's email address.\n //\n // https://shopify.dev/tutorials/add-gdpr-webhooks-to-your-app\n // {\n // \"shop_id\": 954889,\n // \"shop_domain\": \"snowdevil.myshopify.com\",\n // \"orders_requested\": [299938, 280263, 220458],\n // \"customer\": {\n // \"id\": 191167,\n // \"email\": \"john@email.com\",\n // \"phone\": \"555-625-1199\"\n // },\n // \"data_request\": {\n // \"id\": 9999\n // }\n // }\n\n context.status = 200\n})\n"]}
|