@unchainedshop/api 2.12.2 → 3.0.0-alpha2
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/lib/api-index.d.ts +13 -4
- package/lib/api-index.d.ts.map +1 -1
- package/lib/api-index.js +4 -5
- package/lib/api-index.js.map +1 -1
- package/lib/context.d.ts +14 -1
- package/lib/context.d.ts.map +1 -1
- package/lib/context.js +10 -9
- package/lib/context.js.map +1 -1
- package/lib/createGraphQLServer.d.ts +1 -2
- package/lib/createGraphQLServer.d.ts.map +1 -1
- package/lib/createGraphQLServer.js +22 -31
- package/lib/createGraphQLServer.js.map +1 -1
- package/lib/errors.d.ts +3 -6
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +6 -9
- package/lib/errors.js.map +1 -1
- package/lib/events.d.ts +5 -0
- package/lib/events.d.ts.map +1 -0
- package/lib/events.js +8 -0
- package/lib/events.js.map +1 -0
- package/lib/express/createBulkImportMiddleware.d.ts +6 -1
- package/lib/express/createBulkImportMiddleware.d.ts.map +1 -1
- package/lib/express/createBulkImportMiddleware.js +2 -3
- package/lib/express/createBulkImportMiddleware.js.map +1 -1
- package/lib/express/createERCMetadataMiddleware.d.ts +4 -1
- package/lib/express/createERCMetadataMiddleware.d.ts.map +1 -1
- package/lib/express/createERCMetadataMiddleware.js +1 -3
- package/lib/express/createERCMetadataMiddleware.js.map +1 -1
- package/lib/express/index.d.ts +7 -6
- package/lib/express/index.d.ts.map +1 -1
- package/lib/express/index.js +98 -13
- package/lib/express/index.js.map +1 -1
- package/lib/express/passport/access-token-strategy.d.ts +10 -0
- package/lib/express/passport/access-token-strategy.d.ts.map +1 -0
- package/lib/express/passport/access-token-strategy.js +33 -0
- package/lib/express/passport/access-token-strategy.js.map +1 -0
- package/lib/express/passport/setup.d.ts +4 -0
- package/lib/express/passport/setup.d.ts.map +1 -0
- package/lib/express/passport/setup.js +30 -0
- package/lib/express/passport/setup.js.map +1 -0
- package/lib/loaders/index.d.ts +1 -2
- package/lib/loaders/index.d.ts.map +1 -1
- package/lib/loaders/index.js +2 -2
- package/lib/loaders/index.js.map +1 -1
- package/lib/locale-context.d.ts +7 -4
- package/lib/locale-context.d.ts.map +1 -1
- package/lib/locale-context.js +22 -23
- package/lib/locale-context.js.map +1 -1
- package/lib/resolvers/index.d.ts.map +1 -1
- package/lib/resolvers/index.js +0 -2
- package/lib/resolvers/index.js.map +1 -1
- package/lib/resolvers/mutations/accounts/addEmail.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/addEmail.js +10 -2
- package/lib/resolvers/mutations/accounts/addEmail.js.map +1 -1
- package/lib/resolvers/mutations/accounts/addWebAuthnCredentials.js +1 -1
- package/lib/resolvers/mutations/accounts/addWebAuthnCredentials.js.map +1 -1
- package/lib/resolvers/mutations/accounts/changePassword.d.ts +2 -2
- package/lib/resolvers/mutations/accounts/changePassword.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/changePassword.js +13 -7
- package/lib/resolvers/mutations/accounts/changePassword.js.map +1 -1
- package/lib/resolvers/mutations/accounts/createUser.d.ts +2 -3
- package/lib/resolvers/mutations/accounts/createUser.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/createUser.js +21 -26
- package/lib/resolvers/mutations/accounts/createUser.js.map +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialCreationOptions.d.ts +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialCreationOptions.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialCreationOptions.js +2 -2
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialCreationOptions.js.map +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialRequestOptions.d.ts +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialRequestOptions.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialRequestOptions.js +3 -3
- package/lib/resolvers/mutations/accounts/createWebAuthnCredentialRequestOptions.js.map +1 -1
- package/lib/resolvers/mutations/accounts/enrollUser.d.ts +1 -1
- package/lib/resolvers/mutations/accounts/enrollUser.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/enrollUser.js +13 -16
- package/lib/resolvers/mutations/accounts/enrollUser.js.map +1 -1
- package/lib/resolvers/mutations/accounts/forgotPassword.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/forgotPassword.js +11 -8
- package/lib/resolvers/mutations/accounts/forgotPassword.js.map +1 -1
- package/lib/resolvers/mutations/accounts/loginAsGuest.d.ts +1 -2
- package/lib/resolvers/mutations/accounts/loginAsGuest.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/loginAsGuest.js +18 -3
- package/lib/resolvers/mutations/accounts/loginAsGuest.js.map +1 -1
- package/lib/resolvers/mutations/accounts/loginWithPassword.d.ts +2 -4
- package/lib/resolvers/mutations/accounts/loginWithPassword.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/loginWithPassword.js +23 -26
- package/lib/resolvers/mutations/accounts/loginWithPassword.js.map +1 -1
- package/lib/resolvers/mutations/accounts/loginWithWebAuthn.d.ts +1 -2
- package/lib/resolvers/mutations/accounts/loginWithWebAuthn.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/loginWithWebAuthn.js +13 -14
- package/lib/resolvers/mutations/accounts/loginWithWebAuthn.js.map +1 -1
- package/lib/resolvers/mutations/accounts/logout.d.ts +1 -3
- package/lib/resolvers/mutations/accounts/logout.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/logout.js +5 -18
- package/lib/resolvers/mutations/accounts/logout.js.map +1 -1
- package/lib/resolvers/mutations/accounts/removeEmail.js +1 -1
- package/lib/resolvers/mutations/accounts/removeEmail.js.map +1 -1
- package/lib/resolvers/mutations/accounts/resetPassword.d.ts +2 -3
- package/lib/resolvers/mutations/accounts/resetPassword.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/resetPassword.js +48 -43
- package/lib/resolvers/mutations/accounts/resetPassword.js.map +1 -1
- package/lib/resolvers/mutations/accounts/sendEnrollmentEmail.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/sendEnrollmentEmail.js +5 -1
- package/lib/resolvers/mutations/accounts/sendEnrollmentEmail.js.map +1 -1
- package/lib/resolvers/mutations/accounts/sendVerificationEmail.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/sendVerificationEmail.js +15 -4
- package/lib/resolvers/mutations/accounts/sendVerificationEmail.js.map +1 -1
- package/lib/resolvers/mutations/accounts/setPassword.d.ts +1 -1
- package/lib/resolvers/mutations/accounts/setPassword.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/setPassword.js +11 -3
- package/lib/resolvers/mutations/accounts/setPassword.js.map +1 -1
- package/lib/resolvers/mutations/accounts/setUsername.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/setUsername.js +10 -2
- package/lib/resolvers/mutations/accounts/setUsername.js.map +1 -1
- package/lib/resolvers/mutations/accounts/verifyEmail.d.ts +1 -2
- package/lib/resolvers/mutations/accounts/verifyEmail.d.ts.map +1 -1
- package/lib/resolvers/mutations/accounts/verifyEmail.js +14 -6
- package/lib/resolvers/mutations/accounts/verifyEmail.js.map +1 -1
- package/lib/resolvers/mutations/assortments/createAssortment.d.ts +5 -7
- package/lib/resolvers/mutations/assortments/createAssortment.d.ts.map +1 -1
- package/lib/resolvers/mutations/assortments/createAssortment.js +7 -5
- package/lib/resolvers/mutations/assortments/createAssortment.js.map +1 -1
- package/lib/resolvers/mutations/countries/updateCountry.d.ts +3 -1
- package/lib/resolvers/mutations/countries/updateCountry.d.ts.map +1 -1
- package/lib/resolvers/mutations/countries/updateCountry.js +5 -1
- package/lib/resolvers/mutations/countries/updateCountry.js.map +1 -1
- package/lib/resolvers/mutations/enrollments/createEnrollment.d.ts.map +1 -1
- package/lib/resolvers/mutations/enrollments/createEnrollment.js +2 -1
- package/lib/resolvers/mutations/enrollments/createEnrollment.js.map +1 -1
- package/lib/resolvers/mutations/filters/createFilter.d.ts +4 -5
- package/lib/resolvers/mutations/filters/createFilter.d.ts.map +1 -1
- package/lib/resolvers/mutations/filters/createFilter.js +7 -2
- package/lib/resolvers/mutations/filters/createFilter.js.map +1 -1
- package/lib/resolvers/mutations/filters/createFilterOption.d.ts +3 -4
- package/lib/resolvers/mutations/filters/createFilterOption.d.ts.map +1 -1
- package/lib/resolvers/mutations/filters/createFilterOption.js +5 -2
- package/lib/resolvers/mutations/filters/createFilterOption.js.map +1 -1
- package/lib/resolvers/mutations/index.d.ts +0 -12
- package/lib/resolvers/mutations/index.d.ts.map +1 -1
- package/lib/resolvers/mutations/index.js +0 -24
- package/lib/resolvers/mutations/index.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartDiscount.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/addCartDiscount.js +3 -1
- package/lib/resolvers/mutations/orders/addCartDiscount.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartProduct.js +1 -0
- package/lib/resolvers/mutations/orders/addCartProduct.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartQuotation.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/addCartQuotation.js +3 -1
- package/lib/resolvers/mutations/orders/addCartQuotation.js.map +1 -1
- package/lib/resolvers/mutations/orders/addMultipleCartProducts.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/addMultipleCartProducts.js +3 -1
- package/lib/resolvers/mutations/orders/addMultipleCartProducts.js.map +1 -1
- package/lib/resolvers/mutations/orders/emptyCart.js +2 -2
- package/lib/resolvers/mutations/orders/emptyCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/removeCartDiscount.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/removeCartDiscount.js +3 -1
- package/lib/resolvers/mutations/orders/removeCartDiscount.js.map +1 -1
- package/lib/resolvers/mutations/orders/removeCartItem.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/removeCartItem.js +3 -1
- package/lib/resolvers/mutations/orders/removeCartItem.js.map +1 -1
- package/lib/resolvers/mutations/orders/setOrderDeliveryProvider.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/setOrderDeliveryProvider.js +2 -2
- package/lib/resolvers/mutations/orders/setOrderDeliveryProvider.js.map +1 -1
- package/lib/resolvers/mutations/orders/setOrderPaymentProvider.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/setOrderPaymentProvider.js +2 -1
- package/lib/resolvers/mutations/orders/setOrderPaymentProvider.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateCart.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateCart.js +5 -4
- package/lib/resolvers/mutations/orders/updateCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateCartItem.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateCartItem.js +3 -1
- package/lib/resolvers/mutations/orders/updateCartItem.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryPickUp.js +6 -2
- package/lib/resolvers/mutations/orders/updateOrderDeliveryPickUp.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryShipping.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryShipping.js +8 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryShipping.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentCard.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentCard.js +3 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentCard.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentGeneric.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentGeneric.js +3 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentGeneric.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentInvoice.d.ts.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentInvoice.js +3 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentInvoice.js.map +1 -1
- package/lib/resolvers/mutations/products/createProduct.d.ts +5 -6
- package/lib/resolvers/mutations/products/createProduct.d.ts.map +1 -1
- package/lib/resolvers/mutations/products/createProduct.js +6 -5
- package/lib/resolvers/mutations/products/createProduct.js.map +1 -1
- package/lib/resolvers/mutations/products/createProductVariation.d.ts +3 -3
- package/lib/resolvers/mutations/products/createProductVariation.d.ts.map +1 -1
- package/lib/resolvers/mutations/products/createProductVariation.js +7 -4
- package/lib/resolvers/mutations/products/createProductVariation.js.map +1 -1
- package/lib/resolvers/mutations/products/createProductVariationOption.d.ts +4 -5
- package/lib/resolvers/mutations/products/createProductVariationOption.d.ts.map +1 -1
- package/lib/resolvers/mutations/products/createProductVariationOption.js +8 -5
- package/lib/resolvers/mutations/products/createProductVariationOption.js.map +1 -1
- package/lib/resolvers/mutations/warehousing/exportToken.d.ts.map +1 -1
- package/lib/resolvers/mutations/warehousing/exportToken.js +20 -20
- package/lib/resolvers/mutations/warehousing/exportToken.js.map +1 -1
- package/lib/resolvers/queries/events/events.js +1 -1
- package/lib/resolvers/queries/events/events.js.map +1 -1
- package/lib/resolvers/queries/index.d.ts +0 -2
- package/lib/resolvers/queries/index.d.ts.map +1 -1
- package/lib/resolvers/queries/index.js +0 -2
- package/lib/resolvers/queries/index.js.map +1 -1
- package/lib/resolvers/queries/shopInfo.d.ts +0 -2
- package/lib/resolvers/queries/shopInfo.d.ts.map +1 -1
- package/lib/resolvers/queries/shopInfo.js +0 -3
- package/lib/resolvers/queries/shopInfo.js.map +1 -1
- package/lib/resolvers/queries/users/validateResetPasswordToken.js +1 -1
- package/lib/resolvers/queries/users/validateResetPasswordToken.js.map +1 -1
- package/lib/resolvers/queries/users/validateVerifyEmailToken.js +1 -1
- package/lib/resolvers/queries/users/validateVerifyEmailToken.js.map +1 -1
- package/lib/resolvers/type/assortment/assortment-types.d.ts.map +1 -1
- package/lib/resolvers/type/assortment/assortment-types.js +1 -0
- package/lib/resolvers/type/assortment/assortment-types.js.map +1 -1
- package/lib/resolvers/type/country-types.js +2 -2
- package/lib/resolvers/type/country-types.js.map +1 -1
- package/lib/resolvers/type/delivery-provider-types.d.ts.map +1 -1
- package/lib/resolvers/type/delivery-provider-types.js +2 -5
- package/lib/resolvers/type/delivery-provider-types.js.map +1 -1
- package/lib/resolvers/type/event-types.d.ts +1 -1
- package/lib/resolvers/type/event-types.d.ts.map +1 -1
- package/lib/resolvers/type/index.d.ts +4 -36
- package/lib/resolvers/type/index.d.ts.map +1 -1
- package/lib/resolvers/type/index.js +2 -6
- package/lib/resolvers/type/index.js.map +1 -1
- package/lib/resolvers/type/login-method-response-types.d.ts +3 -27
- package/lib/resolvers/type/login-method-response-types.d.ts.map +1 -1
- package/lib/resolvers/type/login-method-response-types.js +1 -6
- package/lib/resolvers/type/login-method-response-types.js.map +1 -1
- package/lib/resolvers/type/payment/payment-provider-types.d.ts.map +1 -1
- package/lib/resolvers/type/payment/payment-provider-types.js +2 -5
- package/lib/resolvers/type/payment/payment-provider-types.js.map +1 -1
- package/lib/resolvers/type/product/product-bundle-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-configurable-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-configurable-types.js +2 -8
- package/lib/resolvers/type/product/product-configurable-types.js.map +1 -1
- package/lib/resolvers/type/product/product-plan-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-plan-types.js +4 -13
- package/lib/resolvers/type/product/product-plan-types.js.map +1 -1
- package/lib/resolvers/type/product/product-simple-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-tokenized-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-types.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-types.js +1 -0
- package/lib/resolvers/type/product/product-types.js.map +1 -1
- package/lib/resolvers/type/user-types.d.ts +1 -3
- package/lib/resolvers/type/user-types.d.ts.map +1 -1
- package/lib/resolvers/type/user-types.js +0 -14
- package/lib/resolvers/type/user-types.js.map +1 -1
- package/lib/resolvers/type/webauthn-credentials-types.js +1 -1
- package/lib/resolvers/type/webauthn-credentials-types.js.map +1 -1
- package/lib/roles/all.d.ts.map +1 -1
- package/lib/roles/all.js +1 -7
- package/lib/roles/all.js.map +1 -1
- package/lib/roles/index.d.ts.map +1 -1
- package/lib/roles/index.js +0 -6
- package/lib/roles/index.js.map +1 -1
- package/lib/roles/loggedIn.d.ts.map +1 -1
- package/lib/roles/loggedIn.js +0 -4
- package/lib/roles/loggedIn.js.map +1 -1
- package/lib/schema/directives.d.ts.map +1 -1
- package/lib/schema/directives.js +1 -5
- package/lib/schema/directives.js.map +1 -1
- package/lib/schema/inputTypes.d.ts.map +1 -1
- package/lib/schema/inputTypes.js +13 -26
- package/lib/schema/inputTypes.js.map +1 -1
- package/lib/schema/mutation.d.ts.map +1 -1
- package/lib/schema/mutation.js +24 -83
- package/lib/schema/mutation.js.map +1 -1
- package/lib/schema/query.d.ts.map +1 -1
- package/lib/schema/query.js +0 -4
- package/lib/schema/query.js.map +1 -1
- package/lib/schema/scalars.d.ts.map +1 -1
- package/lib/schema/scalars.js +0 -1
- package/lib/schema/scalars.js.map +1 -1
- package/lib/schema/types/product/product.js +1 -1
- package/lib/schema/types/product/tokenized-product.js +1 -1
- package/lib/schema/types/shop.d.ts.map +1 -1
- package/lib/schema/types/shop.js +0 -1
- package/lib/schema/types/shop.js.map +1 -1
- package/lib/schema/types/user.d.ts.map +1 -1
- package/lib/schema/types/user.js +2 -21
- package/lib/schema/types/user.js.map +1 -1
- package/package.json +23 -17
- package/src/api-index.ts +19 -14
- package/src/context.ts +23 -10
- package/src/createGraphQLServer.ts +25 -36
- package/src/errors.ts +15 -21
- package/src/events.ts +8 -0
- package/src/express/createBulkImportMiddleware.ts +9 -4
- package/src/express/createERCMetadataMiddleware.ts +6 -4
- package/src/express/index.ts +127 -21
- package/src/express/passport/access-token-strategy.ts +39 -0
- package/src/express/passport/setup.ts +44 -0
- package/src/loaders/index.ts +2 -8
- package/src/locale-context.ts +60 -52
- package/src/resolvers/index.ts +0 -2
- package/src/resolvers/mutations/accounts/addEmail.ts +7 -2
- package/src/resolvers/mutations/accounts/addWebAuthnCredentials.ts +1 -1
- package/src/resolvers/mutations/accounts/changePassword.ts +18 -8
- package/src/resolvers/mutations/accounts/createUser.ts +30 -37
- package/src/resolvers/mutations/accounts/createWebAuthnCredentialCreationOptions.ts +3 -3
- package/src/resolvers/mutations/accounts/createWebAuthnCredentialRequestOptions.ts +4 -4
- package/src/resolvers/mutations/accounts/enrollUser.ts +18 -17
- package/src/resolvers/mutations/accounts/forgotPassword.ts +11 -7
- package/src/resolvers/mutations/accounts/loginAsGuest.ts +23 -4
- package/src/resolvers/mutations/accounts/loginWithPassword.ts +33 -36
- package/src/resolvers/mutations/accounts/loginWithWebAuthn.ts +22 -15
- package/src/resolvers/mutations/accounts/logout.ts +5 -21
- package/src/resolvers/mutations/accounts/removeEmail.ts +1 -1
- package/src/resolvers/mutations/accounts/resetPassword.ts +50 -53
- package/src/resolvers/mutations/accounts/sendEnrollmentEmail.ts +5 -1
- package/src/resolvers/mutations/accounts/sendVerificationEmail.ts +13 -4
- package/src/resolvers/mutations/accounts/setPassword.ts +9 -4
- package/src/resolvers/mutations/accounts/setUsername.ts +8 -2
- package/src/resolvers/mutations/accounts/verifyEmail.ts +15 -6
- package/src/resolvers/mutations/assortments/createAssortment.ts +16 -7
- package/src/resolvers/mutations/countries/updateCountry.ts +7 -2
- package/src/resolvers/mutations/enrollments/createEnrollment.ts +2 -1
- package/src/resolvers/mutations/filters/createFilter.ts +8 -3
- package/src/resolvers/mutations/filters/createFilterOption.ts +9 -7
- package/src/resolvers/mutations/index.ts +0 -24
- package/src/resolvers/mutations/orders/addCartDiscount.ts +3 -1
- package/src/resolvers/mutations/orders/addCartProduct.ts +1 -1
- package/src/resolvers/mutations/orders/addCartQuotation.ts +3 -1
- package/src/resolvers/mutations/orders/addMultipleCartProducts.ts +23 -19
- package/src/resolvers/mutations/orders/emptyCart.ts +2 -2
- package/src/resolvers/mutations/orders/removeCartDiscount.ts +3 -1
- package/src/resolvers/mutations/orders/removeCartItem.ts +3 -1
- package/src/resolvers/mutations/orders/setOrderDeliveryProvider.ts +2 -3
- package/src/resolvers/mutations/orders/setOrderPaymentProvider.ts +2 -1
- package/src/resolvers/mutations/orders/updateCart.ts +5 -4
- package/src/resolvers/mutations/orders/updateCartItem.ts +3 -1
- package/src/resolvers/mutations/orders/updateOrderDeliveryPickUp.ts +7 -7
- package/src/resolvers/mutations/orders/updateOrderDeliveryShipping.ts +8 -1
- package/src/resolvers/mutations/orders/updateOrderPaymentCard.ts +3 -1
- package/src/resolvers/mutations/orders/updateOrderPaymentGeneric.ts +3 -1
- package/src/resolvers/mutations/orders/updateOrderPaymentInvoice.ts +3 -1
- package/src/resolvers/mutations/products/createProduct.ts +9 -7
- package/src/resolvers/mutations/products/createProductVariation.ts +11 -6
- package/src/resolvers/mutations/products/createProductVariationOption.ts +13 -6
- package/src/resolvers/mutations/warehousing/exportToken.ts +19 -20
- package/src/resolvers/queries/events/events.ts +1 -1
- package/src/resolvers/queries/index.ts +0 -2
- package/src/resolvers/queries/shopInfo.ts +0 -5
- package/src/resolvers/queries/users/validateResetPasswordToken.ts +1 -1
- package/src/resolvers/queries/users/validateVerifyEmailToken.ts +1 -1
- package/src/resolvers/type/assortment/assortment-types.ts +1 -0
- package/src/resolvers/type/country-types.ts +2 -2
- package/src/resolvers/type/delivery-provider-types.ts +2 -10
- package/src/resolvers/type/event-types.ts +1 -1
- package/src/resolvers/type/index.ts +2 -6
- package/src/resolvers/type/login-method-response-types.ts +1 -12
- package/src/resolvers/type/payment/payment-provider-types.ts +2 -9
- package/src/resolvers/type/product/product-configurable-types.ts +3 -16
- package/src/resolvers/type/product/product-plan-types.ts +5 -25
- package/src/resolvers/type/product/product-types.ts +1 -0
- package/src/resolvers/type/user-types.ts +1 -17
- package/src/resolvers/type/webauthn-credentials-types.ts +1 -1
- package/src/roles/all.ts +1 -7
- package/src/roles/index.ts +0 -6
- package/src/roles/loggedIn.ts +0 -4
- package/src/schema/directives.ts +1 -5
- package/src/schema/inputTypes.ts +13 -26
- package/src/schema/mutation.ts +24 -83
- package/src/schema/query.ts +0 -4
- package/src/schema/scalars.ts +0 -1
- package/src/schema/types/product/product.ts +1 -1
- package/src/schema/types/product/tokenized-product.ts +1 -1
- package/src/schema/types/shop.ts +0 -1
- package/src/schema/types/user.ts +2 -21
- package/lib/express/createApolloMiddleware.d.ts +0 -4
- package/lib/express/createApolloMiddleware.d.ts.map +0 -1
- package/lib/express/createApolloMiddleware.js +0 -36
- package/lib/express/createApolloMiddleware.js.map +0 -1
- package/lib/express/createSingleSignOnMiddleware.d.ts +0 -5
- package/lib/express/createSingleSignOnMiddleware.d.ts.map +0 -1
- package/lib/express/createSingleSignOnMiddleware.js +0 -73
- package/lib/express/createSingleSignOnMiddleware.js.map +0 -1
- package/lib/hashPassword.d.ts +0 -2
- package/lib/hashPassword.d.ts.map +0 -1
- package/lib/hashPassword.js +0 -5
- package/lib/hashPassword.js.map +0 -1
- package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.d.ts +0 -3
- package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.js +0 -6
- package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.js.map +0 -1
- package/lib/resolvers/mutations/accounts/disableTOTP.d.ts +0 -6
- package/lib/resolvers/mutations/accounts/disableTOTP.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/disableTOTP.js +0 -27
- package/lib/resolvers/mutations/accounts/disableTOTP.js.map +0 -1
- package/lib/resolvers/mutations/accounts/enableTOTP.d.ts +0 -6
- package/lib/resolvers/mutations/accounts/enableTOTP.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/enableTOTP.js +0 -20
- package/lib/resolvers/mutations/accounts/enableTOTP.js.map +0 -1
- package/lib/resolvers/mutations/accounts/impersonate.d.ts +0 -10
- package/lib/resolvers/mutations/accounts/impersonate.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/impersonate.js +0 -15
- package/lib/resolvers/mutations/accounts/impersonate.js.map +0 -1
- package/lib/resolvers/mutations/accounts/linkOAuthAccount.d.ts +0 -7
- package/lib/resolvers/mutations/accounts/linkOAuthAccount.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/linkOAuthAccount.js +0 -30
- package/lib/resolvers/mutations/accounts/linkOAuthAccount.js.map +0 -1
- package/lib/resolvers/mutations/accounts/loginWithOAuth.d.ts +0 -8
- package/lib/resolvers/mutations/accounts/loginWithOAuth.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/loginWithOAuth.js +0 -25
- package/lib/resolvers/mutations/accounts/loginWithOAuth.js.map +0 -1
- package/lib/resolvers/mutations/accounts/logoutAllSessions.d.ts +0 -5
- package/lib/resolvers/mutations/accounts/logoutAllSessions.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/logoutAllSessions.js +0 -20
- package/lib/resolvers/mutations/accounts/logoutAllSessions.js.map +0 -1
- package/lib/resolvers/mutations/accounts/stopImpersonation.d.ts +0 -7
- package/lib/resolvers/mutations/accounts/stopImpersonation.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/stopImpersonation.js +0 -21
- package/lib/resolvers/mutations/accounts/stopImpersonation.js.map +0 -1
- package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.d.ts +0 -6
- package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.d.ts.map +0 -1
- package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.js +0 -13
- package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.js.map +0 -1
- package/lib/resolvers/mutations/assortments/addAssortmentMedia.d.ts +0 -6
- package/lib/resolvers/mutations/assortments/addAssortmentMedia.d.ts.map +0 -1
- package/lib/resolvers/mutations/assortments/addAssortmentMedia.js +0 -18
- package/lib/resolvers/mutations/assortments/addAssortmentMedia.js.map +0 -1
- package/lib/resolvers/mutations/products/addProductMedia.d.ts +0 -6
- package/lib/resolvers/mutations/products/addProductMedia.d.ts.map +0 -1
- package/lib/resolvers/mutations/products/addProductMedia.js +0 -18
- package/lib/resolvers/mutations/products/addProductMedia.js.map +0 -1
- package/lib/resolvers/mutations/users/updateUserAvatar.d.ts +0 -6
- package/lib/resolvers/mutations/users/updateUserAvatar.d.ts.map +0 -1
- package/lib/resolvers/mutations/users/updateUserAvatar.js +0 -22
- package/lib/resolvers/mutations/users/updateUserAvatar.js.map +0 -1
- package/lib/resolvers/queries/users/impersonator.d.ts +0 -3
- package/lib/resolvers/queries/users/impersonator.d.ts.map +0 -1
- package/lib/resolvers/queries/users/impersonator.js +0 -12
- package/lib/resolvers/queries/users/impersonator.js.map +0 -1
- package/lib/resolvers/type/oauth-account.d.ts +0 -6
- package/lib/resolvers/type/oauth-account.d.ts.map +0 -1
- package/lib/resolvers/type/oauth-account.js +0 -7
- package/lib/resolvers/type/oauth-account.js.map +0 -1
- package/lib/resolvers/type/oauth-provider.d.ts +0 -6
- package/lib/resolvers/type/oauth-provider.d.ts.map +0 -1
- package/lib/resolvers/type/oauth-provider.js +0 -6
- package/lib/resolvers/type/oauth-provider.js.map +0 -1
- package/lib/user-context.d.ts +0 -7
- package/lib/user-context.d.ts.map +0 -1
- package/lib/user-context.js +0 -64
- package/lib/user-context.js.map +0 -1
- package/src/express/createApolloMiddleware.ts +0 -40
- package/src/express/createSingleSignOnMiddleware.ts +0 -92
- package/src/hashPassword.ts +0 -5
- package/src/resolvers/mutations/accounts/buildSecretTOTPAuthURL.ts +0 -8
- package/src/resolvers/mutations/accounts/disableTOTP.ts +0 -36
- package/src/resolvers/mutations/accounts/enableTOTP.ts +0 -23
- package/src/resolvers/mutations/accounts/impersonate.ts +0 -21
- package/src/resolvers/mutations/accounts/linkOAuthAccount.ts +0 -51
- package/src/resolvers/mutations/accounts/loginWithOAuth.ts +0 -38
- package/src/resolvers/mutations/accounts/logoutAllSessions.ts +0 -27
- package/src/resolvers/mutations/accounts/stopImpersonation.ts +0 -31
- package/src/resolvers/mutations/accounts/unlinkOAuthAccount.ts +0 -24
- package/src/resolvers/mutations/assortments/addAssortmentMedia.ts +0 -26
- package/src/resolvers/mutations/products/addProductMedia.ts +0 -24
- package/src/resolvers/mutations/users/updateUserAvatar.ts +0 -39
- package/src/resolvers/queries/users/impersonator.ts +0 -19
- package/src/resolvers/type/oauth-account.ts +0 -8
- package/src/resolvers/type/oauth-provider.ts +0 -5
- package/src/user-context.ts +0 -87
|
@@ -1,54 +1,51 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
|
+
|
|
2
3
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import {
|
|
4
|
-
AuthenticationFailedError,
|
|
5
|
-
AuthOperationFailedError,
|
|
6
|
-
InvalidCredentialsError,
|
|
7
|
-
TwoFactorCodeDidNotMatchError,
|
|
8
|
-
TwoFactorCodeRequiredError,
|
|
9
|
-
UserDeactivatedError,
|
|
10
|
-
} from '../../../errors.js';
|
|
11
|
-
import { hashPassword } from '../../../hashPassword.js';
|
|
4
|
+
import { InvalidCredentialsError } from '../../../errors.js';
|
|
12
5
|
|
|
13
6
|
export default async function loginWithPassword(
|
|
14
7
|
root: Root,
|
|
15
8
|
params: {
|
|
16
9
|
username?: string;
|
|
17
10
|
email?: string;
|
|
18
|
-
|
|
19
|
-
totpCode?: string;
|
|
11
|
+
password?: string;
|
|
20
12
|
},
|
|
21
13
|
context: Context,
|
|
22
14
|
) {
|
|
23
|
-
const {
|
|
24
|
-
const { username, email, plainPassword, totpCode } = params;
|
|
25
|
-
|
|
15
|
+
const { username, email, password } = params;
|
|
26
16
|
log('mutation loginWithPassword', { username, email });
|
|
27
17
|
|
|
28
|
-
if (!
|
|
18
|
+
if (!password) {
|
|
29
19
|
throw new Error('Password is required');
|
|
30
20
|
}
|
|
31
21
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
22
|
+
let user = username
|
|
23
|
+
? await context.modules.users.findUserByUsername(username)
|
|
24
|
+
: await context.modules.users.findUserByEmail(email);
|
|
25
|
+
|
|
26
|
+
const verified =
|
|
27
|
+
user.services?.password &&
|
|
28
|
+
(await context.modules.users.verifyPassword(user.services.password, password));
|
|
29
|
+
|
|
30
|
+
if (!verified) throw new InvalidCredentialsError({ username, email });
|
|
31
|
+
|
|
32
|
+
if (user.guest) {
|
|
33
|
+
await context.modules.users.updateGuest(user, false);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
user = await context.modules.users.updateHeartbeat(user._id, {
|
|
37
|
+
remoteAddress: context.remoteAddress,
|
|
38
|
+
remotePort: context.remotePort,
|
|
39
|
+
userAgent: context.userAgent,
|
|
40
|
+
locale: context.localeContext.normalized,
|
|
41
|
+
countryCode: context.countryContext,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (context.userId) {
|
|
45
|
+
await context.services.users.migrateUserData(context.userId, user._id, context);
|
|
53
46
|
}
|
|
47
|
+
|
|
48
|
+
await context.services.orders.nextUserCart({ user, countryCode: context.countryContext }, context);
|
|
49
|
+
|
|
50
|
+
return context.login(user);
|
|
54
51
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import {
|
|
4
|
-
AuthenticationFailedError,
|
|
5
|
-
AuthOperationFailedError,
|
|
6
|
-
UserDeactivatedError,
|
|
7
|
-
} from '../../../errors.js';
|
|
8
3
|
|
|
9
4
|
export default async function loginWithWebAuthn(
|
|
10
5
|
root: Root,
|
|
@@ -13,15 +8,27 @@ export default async function loginWithWebAuthn(
|
|
|
13
8
|
},
|
|
14
9
|
context: Context,
|
|
15
10
|
) {
|
|
16
|
-
const { modules } = context;
|
|
17
|
-
|
|
18
11
|
log('mutation loginWithWebAuthn');
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
12
|
+
|
|
13
|
+
const username =
|
|
14
|
+
Buffer.from(params.webAuthnPublicKeyCredentials?.response?.userHandle, 'base64').toString() || '';
|
|
15
|
+
|
|
16
|
+
let user = await context.modules.users.findUserByUsername(username);
|
|
17
|
+
if (!user) throw new Error('User not found');
|
|
18
|
+
|
|
19
|
+
await context.modules.users.webAuthn.verifyCredentialRequest(
|
|
20
|
+
user.services?.webAuthn,
|
|
21
|
+
user.username,
|
|
22
|
+
params.webAuthnPublicKeyCredentials,
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
user = await context.modules.users.updateHeartbeat(user._id, {
|
|
26
|
+
remoteAddress: context.remoteAddress,
|
|
27
|
+
remotePort: context.remotePort,
|
|
28
|
+
userAgent: context.userAgent,
|
|
29
|
+
locale: context.localeContext.normalized,
|
|
30
|
+
countryCode: context.countryContext,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return context.login(user);
|
|
27
34
|
}
|
|
@@ -1,28 +1,12 @@
|
|
|
1
1
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
2
|
-
import { log
|
|
2
|
+
import { log } from '@unchainedshop/logger';
|
|
3
3
|
|
|
4
|
-
export default async function logout(root: Root,
|
|
5
|
-
const {
|
|
4
|
+
export default async function logout(root: Root, _: never, context: Context) {
|
|
5
|
+
const { userId } = context;
|
|
6
6
|
|
|
7
7
|
log('mutation logout', { userId });
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
{
|
|
11
|
-
token,
|
|
12
|
-
loginToken: context.loginToken,
|
|
13
|
-
userId: context.userId,
|
|
14
|
-
},
|
|
15
|
-
context,
|
|
16
|
-
);
|
|
9
|
+
const success = await context.logout();
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
log('Error while logging out', {
|
|
20
|
-
logLevel: LogLevel.Error,
|
|
21
|
-
...loggedOut.error,
|
|
22
|
-
});
|
|
23
|
-
} else {
|
|
24
|
-
setLoginToken(null);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return { success: loggedOut.success };
|
|
11
|
+
return { success };
|
|
28
12
|
}
|
|
@@ -14,7 +14,7 @@ export default async function removeEmail(
|
|
|
14
14
|
if (!(await modules.users.userExists({ userId: normalizedUserId })))
|
|
15
15
|
throw new UserNotFoundError({ userId: normalizedUserId });
|
|
16
16
|
|
|
17
|
-
await modules.
|
|
17
|
+
await modules.users.removeEmail(normalizedUserId, params.email);
|
|
18
18
|
|
|
19
19
|
return modules.users.findUserById(normalizedUserId);
|
|
20
20
|
}
|
|
@@ -1,71 +1,68 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
AuthOperationFailedError,
|
|
6
|
-
InvalidResetTokenError,
|
|
7
|
-
NoEmailSetError,
|
|
8
|
-
ResetPasswordLinkExpiredError,
|
|
9
|
-
ResetPasswordLinkUnknownAddressError,
|
|
10
|
-
} from '../../../errors.js';
|
|
3
|
+
import { InvalidResetTokenError, PasswordInvalidError } from '../../../errors.js';
|
|
11
4
|
|
|
12
5
|
export default async function resetPassword(
|
|
13
6
|
root: Root,
|
|
14
|
-
params: {
|
|
7
|
+
params: { newPassword?: string; token: string },
|
|
15
8
|
context: Context,
|
|
16
9
|
) {
|
|
17
10
|
const { modules, userId } = context;
|
|
18
11
|
|
|
19
12
|
log('mutation resetPassword', { userId });
|
|
20
13
|
|
|
21
|
-
if (!params.
|
|
14
|
+
if (!params.newPassword) {
|
|
22
15
|
throw new Error('Password is required');
|
|
23
16
|
}
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
let user = await modules.users.findUserByResetToken(params.token);
|
|
18
|
+
|
|
19
|
+
if (!user) throw new InvalidResetTokenError({});
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
);
|
|
30
|
-
if (resetTicket.address) {
|
|
31
|
-
// Try verifying the E-Mail along the way
|
|
32
|
-
try {
|
|
33
|
-
const updatedUser = await modules.users.updateUser(
|
|
34
|
-
{
|
|
35
|
-
_id: userWithNewPassword.id,
|
|
36
|
-
emails: {
|
|
37
|
-
$elemMatch: {
|
|
38
|
-
address: emailRegexOperator(resetTicket.address),
|
|
39
|
-
verified: false,
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
$set: {
|
|
45
|
-
'emails.$[email].verified': true,
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
arrayFilters: [{ 'email.address': resetTicket.address }],
|
|
50
|
-
},
|
|
51
|
-
);
|
|
52
|
-
if (updatedUser) {
|
|
53
|
-
await modules.accounts.emit('VerifyEmailSuccess', updatedUser);
|
|
54
|
-
}
|
|
55
|
-
} catch (e) {
|
|
56
|
-
/* */
|
|
57
|
-
}
|
|
58
|
-
}
|
|
21
|
+
try {
|
|
22
|
+
await modules.users.setPassword(user._id, params.newPassword);
|
|
59
23
|
|
|
60
|
-
|
|
61
|
-
|
|
24
|
+
// TODO: Verify E-Mail after reset!
|
|
25
|
+
// if (resetTicket.address) {
|
|
26
|
+
// // Try verifying the E-Mail along the way
|
|
27
|
+
// try {
|
|
28
|
+
// const updatedUser = await modules.users.updateUser(
|
|
29
|
+
// {
|
|
30
|
+
// _id: userWithNewPassword.id,
|
|
31
|
+
// emails: {
|
|
32
|
+
// $elemMatch: {
|
|
33
|
+
// address: emailRegexOperator(resetTicket.address),
|
|
34
|
+
// verified: false,
|
|
35
|
+
// },
|
|
36
|
+
// },
|
|
37
|
+
// },
|
|
38
|
+
// {
|
|
39
|
+
// $set: {
|
|
40
|
+
// 'emails.$[email].verified': true,
|
|
41
|
+
// },
|
|
42
|
+
// },
|
|
43
|
+
// {
|
|
44
|
+
// arrayFilters: [{ 'email.address': resetTicket.address }],
|
|
45
|
+
// },
|
|
46
|
+
// );
|
|
47
|
+
// if (updatedUser) {
|
|
48
|
+
// await modules.accounts.emit('VerifyEmailSuccess', updatedUser);
|
|
49
|
+
// }
|
|
50
|
+
// } catch (e) {
|
|
51
|
+
// /* */
|
|
52
|
+
// }
|
|
53
|
+
// }
|
|
62
54
|
} catch (e) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (e.code === 'ResetPasswordLinkExpired') throw new ResetPasswordLinkExpiredError({});
|
|
66
|
-
if (e.code === 'ResetPasswordLinkUnknownAddress')
|
|
67
|
-
throw new ResetPasswordLinkUnknownAddressError({});
|
|
68
|
-
if (e.code === 'NoEmailSet') throw new NoEmailSetError({});
|
|
69
|
-
throw new AuthOperationFailedError({});
|
|
55
|
+
if (e.cause === 'PASSWORD_INVALID') throw new PasswordInvalidError({ userId: user._id });
|
|
56
|
+
else throw e;
|
|
70
57
|
}
|
|
58
|
+
|
|
59
|
+
user = await context.modules.users.updateHeartbeat(user._id, {
|
|
60
|
+
remoteAddress: context.remoteAddress,
|
|
61
|
+
remotePort: context.remotePort,
|
|
62
|
+
userAgent: context.userAgent,
|
|
63
|
+
locale: context.localeContext.normalized,
|
|
64
|
+
countryCode: context.countryContext,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return context.login(user);
|
|
71
68
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
+
import { UserNotFoundError } from '../../../errors.js';
|
|
3
4
|
|
|
4
5
|
export default async function sendEnrollmentEmail(
|
|
5
6
|
root: Root,
|
|
@@ -8,8 +9,11 @@ export default async function sendEnrollmentEmail(
|
|
|
8
9
|
) {
|
|
9
10
|
log('mutation sendEnrollmentEmail', { email, userId });
|
|
10
11
|
|
|
12
|
+
const user = await modules.users.findUserByEmail(email);
|
|
13
|
+
if (!user) throw new UserNotFoundError({ email });
|
|
14
|
+
|
|
11
15
|
try {
|
|
12
|
-
await modules.
|
|
16
|
+
await modules.users.sendResetPasswordEmail(user._id, email, true);
|
|
13
17
|
return {
|
|
14
18
|
success: true,
|
|
15
19
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
2
2
|
import { log } from '@unchainedshop/logger';
|
|
3
|
+
import { UserNotFoundError } from '../../../errors.js';
|
|
3
4
|
|
|
4
5
|
export default async function sendVerificationEmail(
|
|
5
6
|
root: Root,
|
|
@@ -8,9 +9,17 @@ export default async function sendVerificationEmail(
|
|
|
8
9
|
) {
|
|
9
10
|
log('mutation sendVerificationEmail', { email, userId });
|
|
10
11
|
|
|
11
|
-
await modules.
|
|
12
|
+
const user = await modules.users.findUserByEmail(email);
|
|
13
|
+
if (!user) throw new UserNotFoundError({ email });
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
try {
|
|
16
|
+
await modules.users.sendVerificationEmail(user._id, email);
|
|
17
|
+
return {
|
|
18
|
+
success: true,
|
|
19
|
+
};
|
|
20
|
+
} catch (e) {
|
|
21
|
+
return {
|
|
22
|
+
success: false,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
16
25
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import { UserNotFoundError, InvalidIdError } from '../../../errors.js';
|
|
3
|
+
import { UserNotFoundError, InvalidIdError, PasswordInvalidError } from '../../../errors.js';
|
|
4
4
|
|
|
5
5
|
export default async function setPassword(
|
|
6
6
|
root: Root,
|
|
7
|
-
params: {
|
|
7
|
+
params: { newPassword: string; userId: string },
|
|
8
8
|
{ modules, userId }: Context,
|
|
9
9
|
) {
|
|
10
10
|
const normalizedUserId = params.userId || userId;
|
|
@@ -12,13 +12,18 @@ export default async function setPassword(
|
|
|
12
12
|
log(`mutation setPassword ${normalizedUserId}`, { userId });
|
|
13
13
|
|
|
14
14
|
if (!normalizedUserId) throw new InvalidIdError({ userId: normalizedUserId });
|
|
15
|
-
if (!params.
|
|
15
|
+
if (!params.newPassword) {
|
|
16
16
|
throw new Error('Password is required');
|
|
17
17
|
}
|
|
18
18
|
if (!(await modules.users.userExists({ userId: normalizedUserId })))
|
|
19
19
|
throw new UserNotFoundError({ userId: normalizedUserId });
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
try {
|
|
22
|
+
await modules.users.setPassword(normalizedUserId, params.newPassword);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
if (e.cause === 'PASSWORD_INVALID') throw new PasswordInvalidError({ userId: normalizedUserId });
|
|
25
|
+
else throw e;
|
|
26
|
+
}
|
|
22
27
|
|
|
23
28
|
return modules.users.findUserById(normalizedUserId);
|
|
24
29
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import { UserNotFoundError, InvalidIdError } from '../../../errors.js';
|
|
3
|
+
import { UserNotFoundError, InvalidIdError, UsernameAlreadyExistsError } from '../../../errors.js';
|
|
4
4
|
|
|
5
5
|
export default async function setUsername(
|
|
6
6
|
root: Root,
|
|
@@ -15,7 +15,13 @@ export default async function setUsername(
|
|
|
15
15
|
if (!(await modules.users.userExists({ userId: normalizedUserId })))
|
|
16
16
|
throw new UserNotFoundError({ userId: normalizedUserId });
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
try {
|
|
19
|
+
await modules.users.setUsername(normalizedUserId, params.username);
|
|
20
|
+
} catch (e) {
|
|
21
|
+
if (e.cause === 'USERNAME_INVALID')
|
|
22
|
+
throw new UsernameAlreadyExistsError({ userId: normalizedUserId });
|
|
23
|
+
else throw e;
|
|
24
|
+
}
|
|
19
25
|
|
|
20
26
|
return modules.users.findUserById(normalizedUserId);
|
|
21
27
|
}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
+
import { InvalidEmailVerificationTokenError } from '../../../errors.js';
|
|
3
4
|
|
|
4
5
|
export default async function verifyEmail(root: Root, { token }: { token: any }, context: Context) {
|
|
5
6
|
const { modules, userId } = context;
|
|
6
7
|
|
|
7
8
|
log(`mutation verifyEmail ${userId}`, { userId });
|
|
8
9
|
|
|
9
|
-
const
|
|
10
|
+
const unverifiedToken = await modules.users.findUnverifiedEmailToken(token);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
if (!unverifiedToken) {
|
|
13
|
+
throw new InvalidEmailVerificationTokenError({ token });
|
|
14
|
+
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
await modules.users.verifyEmail(unverifiedToken.userId, unverifiedToken.address);
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
const user = await context.modules.users.updateHeartbeat(unverifiedToken.userId, {
|
|
19
|
+
remoteAddress: context.remoteAddress,
|
|
20
|
+
remotePort: context.remotePort,
|
|
21
|
+
userAgent: context.userAgent,
|
|
22
|
+
locale: context.localeContext.normalized,
|
|
23
|
+
countryCode: context.countryContext,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return context.login(user);
|
|
18
27
|
}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
3
|
-
import { Assortment } from '@unchainedshop/types/assortments.js';
|
|
3
|
+
import { Assortment, AssortmentText } from '@unchainedshop/types/assortments.js';
|
|
4
4
|
|
|
5
5
|
export default async function createAssortment(
|
|
6
6
|
root: Root,
|
|
7
|
-
{
|
|
8
|
-
|
|
7
|
+
{
|
|
8
|
+
texts,
|
|
9
|
+
assortment: assortmentData,
|
|
10
|
+
}: {
|
|
11
|
+
assortment: Assortment;
|
|
12
|
+
texts?: AssortmentText[];
|
|
13
|
+
},
|
|
14
|
+
{ modules, userId }: Context,
|
|
9
15
|
) {
|
|
10
16
|
log('mutation createAssortment', { userId });
|
|
11
17
|
|
|
12
|
-
const
|
|
13
|
-
...
|
|
14
|
-
locale: localeContext.language,
|
|
18
|
+
const assortment = await modules.assortments.create({
|
|
19
|
+
...assortmentData,
|
|
15
20
|
});
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
if (texts) {
|
|
23
|
+
await modules.assortments.texts.updateTexts(assortment._id, texts);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return assortment;
|
|
18
27
|
}
|
|
@@ -5,7 +5,7 @@ import { CountryNotFoundError, InvalidIdError } from '../../../errors.js';
|
|
|
5
5
|
|
|
6
6
|
export default async function updateCountry(
|
|
7
7
|
root: Root,
|
|
8
|
-
{ country, countryId }: { country: Country; countryId: string },
|
|
8
|
+
{ country, countryId }: { country: Country & { defaultCurrencyId: string }; countryId: string },
|
|
9
9
|
{ userId, modules }: Context,
|
|
10
10
|
) {
|
|
11
11
|
log(`mutation updateCountry ${countryId}`, { userId });
|
|
@@ -15,7 +15,12 @@ export default async function updateCountry(
|
|
|
15
15
|
if (!(await modules.countries.countryExists({ countryId })))
|
|
16
16
|
throw new CountryNotFoundError({ countryId });
|
|
17
17
|
|
|
18
|
-
await modules.
|
|
18
|
+
const currencyObject = await modules.currencies.findCurrency({
|
|
19
|
+
currencyId: country.defaultCurrencyId,
|
|
20
|
+
});
|
|
21
|
+
const defaultCurrencyCode = country?.defaultCurrencyCode || currencyObject?.isoCode;
|
|
22
|
+
|
|
23
|
+
await modules.countries.update(countryId, { ...country, defaultCurrencyCode });
|
|
19
24
|
|
|
20
25
|
return modules.countries.findCountry({ countryId });
|
|
21
26
|
}
|
|
@@ -13,7 +13,7 @@ export default async function createEnrollment(
|
|
|
13
13
|
{ contact, plan, billingAddress, payment, delivery, meta },
|
|
14
14
|
context: Context,
|
|
15
15
|
) {
|
|
16
|
-
const { countryContext, modules, userId } = context;
|
|
16
|
+
const { countryContext, currencyContext, modules, userId } = context;
|
|
17
17
|
|
|
18
18
|
log('mutation createEnrollment', { userId });
|
|
19
19
|
|
|
@@ -40,6 +40,7 @@ export default async function createEnrollment(
|
|
|
40
40
|
configuration,
|
|
41
41
|
contact,
|
|
42
42
|
countryCode: countryContext,
|
|
43
|
+
currencyCode: currencyContext,
|
|
43
44
|
delivery,
|
|
44
45
|
meta,
|
|
45
46
|
payment,
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { Root, Context } from '@unchainedshop/types/api.js';
|
|
3
|
-
import { Filter } from '@unchainedshop/types/filters.js';
|
|
3
|
+
import { Filter, FilterInputText } from '@unchainedshop/types/filters.js';
|
|
4
4
|
|
|
5
5
|
export default async function createFilter(
|
|
6
6
|
root: Root,
|
|
7
|
-
{ filter }: { filter: Filter
|
|
7
|
+
{ filter, texts }: { filter: Filter; texts: FilterInputText[] },
|
|
8
8
|
context: Context,
|
|
9
9
|
) {
|
|
10
10
|
const { modules, localeContext, userId } = context;
|
|
11
11
|
log('mutation createFilter', { userId });
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
const newFilter = await modules.filters.create(
|
|
14
14
|
{
|
|
15
15
|
...filter,
|
|
16
|
+
title: '',
|
|
16
17
|
locale: localeContext.language,
|
|
17
18
|
},
|
|
18
19
|
context,
|
|
19
20
|
);
|
|
21
|
+
if (texts) {
|
|
22
|
+
await modules.filters.texts.updateTexts({ filterId: newFilter._id }, texts);
|
|
23
|
+
}
|
|
24
|
+
return newFilter;
|
|
20
25
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
2
2
|
import { log } from '@unchainedshop/logger';
|
|
3
|
+
import { FilterInputText } from '@unchainedshop/types/filters.js';
|
|
3
4
|
import { FilterNotFoundError, InvalidIdError } from '../../../errors.js';
|
|
4
5
|
|
|
5
6
|
export default async function createFilterOption(
|
|
6
7
|
root: Root,
|
|
7
|
-
params: { filterId: string; option:
|
|
8
|
+
params: { filterId: string; option: string; texts?: FilterInputText[] },
|
|
8
9
|
context: Context,
|
|
9
10
|
) {
|
|
10
11
|
const { modules, userId } = context;
|
|
11
|
-
const { filterId, option } = params;
|
|
12
|
+
const { filterId, option, texts } = params;
|
|
12
13
|
|
|
13
14
|
log(`mutation createFilterOption ${filterId}`, { userId });
|
|
14
15
|
|
|
@@ -16,10 +17,11 @@ export default async function createFilterOption(
|
|
|
16
17
|
|
|
17
18
|
if (!(await modules.filters.filterExists({ filterId }))) throw new FilterNotFoundError({ filterId });
|
|
18
19
|
|
|
19
|
-
const filter = await modules.filters.createFilterOption(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
const filter = await modules.filters.createFilterOption(filterId, { value: option }, context);
|
|
21
|
+
|
|
22
|
+
if (texts) {
|
|
23
|
+
await modules.filters.texts.updateTexts({ filterId, filterOptionValue: option }, texts);
|
|
24
|
+
}
|
|
25
|
+
|
|
24
26
|
return filter;
|
|
25
27
|
}
|