From ba13b2ec0a09fcf5268a2afca9c9acebd0257440 Mon Sep 17 00:00:00 2001 From: Geoffrey K Taylor Date: Mon, 22 May 2023 13:43:10 -0400 Subject: [PATCH] feat: Authorizing URLs implemented and tested. (#745) * feat: Authorizing URLs implemented and tested. * feat: More woographql_*_nonce functions implemented. * chore: linting changes made. * chore: linting changes made. * fix: woographql_*_ functions tested. * chore: WPCS compliance met. * devops: lint-code script updated to PHP v8.0 * chore: WPCS compliance met * devops: TransferSessionHandlerTest & QLSessionHandlerTest updated * devops: codeclimate.yml added. * chore: Linter compliance met * devops: Harmonizing WordPress doc written and Settings doc updated. * chore: Typo fixed in docs. * fix: General bugfixes and improvements related to Auth URLs * devops: More docs. * chore: Linter compliance met * chore: small change made to docs. --- .github/workflows/lint-code.yml | 2 +- access-functions.php | 92 ++++- codeception.dist.yml | 1 + codeclimate.yml | 5 + composer.json | 2 + composer.lock | 222 ++++++++++- docs/harmonizing-with-wordpress.md | 221 +++++++++++ ...heckout-nonce-name-settings-screenshot.png | Bin 0 -> 49338 bytes docs/images/authorizing-url-settings.png | Bin 0 -> 73153 bytes ...n-transferring-urls-setting-screenshot.png | Bin 0 -> 23918 bytes docs/images/overview-screenshot.png | Bin 106487 -> 104187 bytes docs/settings.md | 15 + includes/admin/class-general.php | 149 +++++++- includes/class-type-registry.php | 42 ++- includes/class-woocommerce-filters.php | 45 ++- includes/class-wp-graphql-woocommerce.php | 21 ++ includes/model/class-customer.php | 2 +- includes/mutation/class-update-session.php | 121 ++++++ includes/type/object/class-customer-type.php | 275 +++++++++++--- includes/utils/class-protected-router.php | 345 ++++++++++++++++++ includes/utils/class-ql-session-handler.php | 39 +- .../class-session-transaction-manager.php | 3 +- .../utils/class-transfer-session-handler.php | 92 +++++ local/.htaccess | 2 +- phpcs.xml.dist | 2 +- tests/_data/config.php | 14 +- tests/_support/Helper/GraphQLE2E.php | 50 +++ .../CustomerProceedsToCheckoutCept.php | 97 +++++ tests/functional/ProtectedRouterCest.php | 226 ++++++++++++ tests/wpunit/CustomerQueriesTest.php | 63 +++- tests/wpunit/ProtectedRouterTest.php | 54 +++ tests/wpunit/QLSessionHandlerTest.php | 24 ++ tests/wpunit/TransferSessionHandlerTest.php | 73 ++++ tests/wpunit/UpdateSessionMutationTest.php | 66 ++++ tests/wpunit/bootstrap.php | 4 - wp-graphql-woocommerce.php | 11 + 36 files changed, 2289 insertions(+), 91 deletions(-) create mode 100644 codeclimate.yml create mode 100644 docs/images/auth-endpoint-and-checkout-nonce-name-settings-screenshot.png create mode 100644 docs/images/authorizing-url-settings.png create mode 100644 docs/images/enable-user-session-transferring-urls-setting-screenshot.png create mode 100644 includes/mutation/class-update-session.php create mode 100644 includes/utils/class-protected-router.php create mode 100644 includes/utils/class-transfer-session-handler.php create mode 100644 tests/acceptance/CustomerProceedsToCheckoutCept.php create mode 100644 tests/functional/ProtectedRouterCest.php create mode 100644 tests/wpunit/ProtectedRouterTest.php create mode 100644 tests/wpunit/TransferSessionHandlerTest.php create mode 100644 tests/wpunit/UpdateSessionMutationTest.php diff --git a/.github/workflows/lint-code.yml b/.github/workflows/lint-code.yml index bb8384b1..42211af8 100644 --- a/.github/workflows/lint-code.yml +++ b/.github/workflows/lint-code.yml @@ -23,7 +23,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.3 + php-version: 8.0 extensions: mbstring, intl tools: composer diff --git a/access-functions.php b/access-functions.php index c5d0202a..796b7fca 100644 --- a/access-functions.php +++ b/access-functions.php @@ -229,12 +229,6 @@ if ( ! function_exists( 'wc_graphql_camel_case_to_underscore' ) ) { } }//end if -/** - * Plugin global functions. - * - * @package Axis\Plugin_Distributor - */ - if ( ! function_exists( 'woographql_setting' ) ) : /** * Get an option value from WooGraphQL settings @@ -275,6 +269,92 @@ if ( ! function_exists( 'woographql_setting' ) ) : } endif; +if ( ! function_exists( 'woographql_get_session_uid' ) ) : + /** + * Returns end-user's customer ID. + * + * @return string|int + */ + function woographql_get_session_uid() { + return WC()->session->get_customer_id(); + } +endif; + +if ( ! function_exists( 'woographql_get_session_token' ) ) : + /** + * Returns session user's "client_session_id" + * + * @return string + */ + function woographql_get_session_token() { + return WC()->session->get_client_session_id(); + } +endif; + +if ( ! function_exists( 'woographql_create_nonce' ) ) : + /** + * Creates WooGraphQL session transfer nonces. + * + * @param string $action Nonce name. + */ + function woographql_create_nonce( $action = -1 ) { + $uid = woographql_get_session_uid(); + $token = woographql_get_session_token(); + $i = wp_nonce_tick( $action ); + + return substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); + } +endif; + +if ( ! function_exists( 'woographql_verify_nonce' ) ) : + /** + * Validate WooGraphQL session transfer nonces. + * + * @param string $nonce Nonce to validated. + * @param integer|string $action Nonce name. + * + * @return bool + */ + function woographql_verify_nonce( $nonce, $action = -1 ) { + $nonce = (string) $nonce; + $uid = woographql_get_session_uid(); + + if ( empty( $nonce ) ) { + return false; + } + + $token = woographql_get_session_token(); + $i = wp_nonce_tick( $action ); + + // Nonce generated 0-12 hours ago. + $expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); + if ( hash_equals( $expected, $nonce ) ) { + return 1; + } + + // Nonce generated 12-24 hours ago. + $expected = substr( wp_hash( ( $i - 1 ) . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); + if ( hash_equals( $expected, $nonce ) ) { + return 2; + } + + /** + * Fires when nonce verification fails. + * + * @since 4.4.0 + * + * @param string $nonce The invalid nonce. + * @param string|int $action The nonce action. + * @param WP_User $user The current user object. + * @param string $token The user's session token. + */ + do_action( 'graphql_verify_nonce_failed', $nonce, $action, $uid, $token ); + + // Invalid nonce. + return false; + } +endif; + diff --git a/codeception.dist.yml b/codeception.dist.yml index 423b3b21..a8ab65bd 100644 --- a/codeception.dist.yml +++ b/codeception.dist.yml @@ -57,6 +57,7 @@ modules: REST: depends: WPBrowser url: '%WORDPRESS_URL%' + cookies: false WPFilesystem: wpRootFolder: '%WP_CORE_DIR%' plugins: '/wp-content/plugins' diff --git a/codeclimate.yml b/codeclimate.yml new file mode 100644 index 00000000..71b63a6a --- /dev/null +++ b/codeclimate.yml @@ -0,0 +1,5 @@ +plugins: + phpcodesniffer: + enabled: true + config: + standard: "phpcs.xml.dist" \ No newline at end of file diff --git a/composer.json b/composer.json index 5020b6bd..355caf2b 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "firebase/php-jwt": "^6.1.0" }, "require-dev": { + "automattic/vipwpcs": "^2.3", "squizlabs/php_codesniffer": "^3.5", "wp-coding-standards/wpcs": "^2.3" }, @@ -34,6 +35,7 @@ "sort-packages": true, "allow-plugins": { "johnpbloch/wordpress-core-installer": true, + "dealerdirect/phpcodesniffer-composer-installer": true, "composer/installers": true } }, diff --git a/composer.lock b/composer.lock index ccbacc6c..aa08ff8d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,29 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "49e1ecf4a41487b3de0547b8e3860c6a", + "content-hash": "57cb19ef33e8b4bd0343bb725e4c0f6b", "packages": [ { "name": "firebase/php-jwt", - "version": "v6.4.0", + "version": "v6.5.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224" + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224", - "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/e94e7353302b0c11ec3cfff7180cd0b1743975d2", + "reference": "e94e7353302b0c11ec3cfff7180cd0b1743975d2", "shasum": "" }, "require": { - "php": "^7.1||^8.0" + "php": "^7.4||^8.0" }, "require-dev": { "guzzlehttp/guzzle": "^6.5||^7.4", - "phpspec/prophecy-phpunit": "^1.1", - "phpunit/phpunit": "^7.5||^9.5", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", "psr/cache": "^1.0||^2.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" @@ -65,24 +65,209 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.4.0" + "source": "https://github.com/firebase/php-jwt/tree/v6.5.0" }, - "time": "2023-02-09T21:01:23+00:00" + "time": "2023-05-12T15:47:07+00:00" } ], "packages-dev": [ { - "name": "squizlabs/php_codesniffer", - "version": "3.7.1", + "name": "automattic/vipwpcs", + "version": "2.3.3", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + "url": "https://github.com/Automattic/VIP-Coding-Standards.git", + "reference": "6cd0a6a82bc0ac988dbf9d6a7c2e293dc8ac640b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", + "url": "https://api.github.com/repos/Automattic/VIP-Coding-Standards/zipball/6cd0a6a82bc0ac988dbf9d6a7c2e293dc8ac640b", + "reference": "6cd0a6a82bc0ac988dbf9d6a7c2e293dc8ac640b", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7", + "php": ">=5.4", + "sirbrillig/phpcs-variable-analysis": "^2.11.1", + "squizlabs/php_codesniffer": "^3.5.5", + "wp-coding-standards/wpcs": "^2.3" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^0.5", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpcompatibility/php-compatibility": "^9", + "phpcsstandards/phpcsdevtools": "^1.0", + "phpunit/phpunit": "^4 || ^5 || ^6 || ^7" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/Automattic/VIP-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress VIP minimum coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "support": { + "issues": "https://github.com/Automattic/VIP-Coding-Standards/issues", + "source": "https://github.com/Automattic/VIP-Coding-Standards", + "wiki": "https://github.com/Automattic/VIP-Coding-Standards/wiki" + }, + "time": "2021-09-29T16:20:23+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2022-02-04T12:51:07+00:00" + }, + { + "name": "sirbrillig/phpcs-variable-analysis", + "version": "v2.11.16", + "source": { + "type": "git", + "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", + "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/dc5582dc5a93a235557af73e523c389aac9a8e88", + "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "squizlabs/php_codesniffer": "^3.5.6" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "phpcsstandards/phpcsdevcs": "^1.1", + "phpstan/phpstan": "^1.7", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.5 || ^7.0 || ^8.0 || ^9.0", + "sirbrillig/phpcs-import-detection": "^1.1", + "vimeo/psalm": "^0.2 || ^0.3 || ^1.1 || ^4.24 || ^5.0@beta" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "VariableAnalysis\\": "VariableAnalysis/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Sam Graham", + "email": "php-codesniffer-variableanalysis@illusori.co.uk" + }, + { + "name": "Payton Swick", + "email": "payton@foolord.com" + } + ], + "description": "A PHPCS sniff to detect problems with variables.", + "keywords": [ + "phpcs", + "static analysis" + ], + "support": { + "issues": "https://github.com/sirbrillig/phpcs-variable-analysis/issues", + "source": "https://github.com/sirbrillig/phpcs-variable-analysis", + "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" + }, + "time": "2023-03-31T16:46:32+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -118,14 +303,15 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2022-06-18T07:21:10+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "wp-coding-standards/wpcs", diff --git a/docs/harmonizing-with-wordpress.md b/docs/harmonizing-with-wordpress.md index e69de29b..2e7d093f 100644 --- a/docs/harmonizing-with-wordpress.md +++ b/docs/harmonizing-with-wordpress.md @@ -0,0 +1,221 @@ +--- +title: "Harmonizing with WordPress" +description: "Learn how to create a secure checkout button and understand the security behind the URL validation." +keywords: "WooGraphQL, WooCommerce, checkout functionality, secure checkout, session transferring URLs, nonce generation, session meta, URL validation, Client Session ID, UpdateSession mutation, GraphQL, cart page, WordPress, frontend security" +author: "Geoff Taylor" +--- + +# Harmonizing with WordPress + +In our [previous guide](using-cart-data.md), we created a cart page for our WooCommerce store. Now, we are going to add a "Checkout" button to this page and discuss how to ensure the security of the process. + +Our checkout button's `href` attribute will be a nonced URL that directs the user to a particular endpoint on the WP backend. The endpoint performs a set of operations such as validating the URL, loading the WooCommerce session, authenticating the registered user, and redirecting to the checkout page. If the URL validation fails, the user will be redirected to the WP homepage. + +## Enabling Dedicated Router and Nonce Generation + +Before starting with the checkout button creation, we need to activate the dedicated router and nonce generation feature introduced in WooGraphQL v0.13.0. To do this, enable the "User Session transferring URLs" option in your WooGraphQL settings. Also, make sure to check the "Checkout URL" checkbox under this option. + +![Enable User Session Transferring URLs Setting Screenshot](images/enable-user-session-transferring-urls-setting-screenshot.png) + +Although it's not mandatory, it's recommended to set the "Endpoint for Authorizing URLs" and "Checkout URL nonce name" settings with secure values for increased security. + +![Authorizing URLs endpoint and Checkout URL Nonce name settings screenshot](images/auth-endpoint-and-checkout-nonce-name-settings-screenshot.png) + +## Creating the Checkout Button + +To create a checkout button in our CartPage component, we can use the `checkoutUrl` field from the `customer` query. This URL is dynamically generated by our GraphQL server and is now ready for use. Let's update our CartPage component: + +```jsx +// ...existing code... +Checkout +// ...existing code... +``` + +## Understanding URL Validation and Security + +Although our checkout button is now functional, it's important to note that the default URL validation process can be improved in terms of security. In the next part of this guide, we will discuss the security measures and how to enhance them. + +### Improving Security with Client Session ID + +The first step is to create a "Client Session ID" in our app and pass it to the WooCommerce session using the `updateSession` mutation. This mutation allows us to set session metadata directly in the WooCommerce session data object. The `client_session_id` meta is used by WooGraphQL to create the nonce. + +If WooGraphQL cannot find this meta, it generates one on the server, making the URL potentially usable on any machine. This is why it's important to avoid an arbitrary string as the session ID. Instead, we should use a value tied to the user's machine, like their IP or User Agent. Afterward, this value should be one-way hashed for increased security. + +Furthermore, we also need to set the `client_session_id_expiration` as a string value representing the expiration time in seconds. For example, to set an expiration time of one hour from now, we could use: `Math.floor(new Date().getTime() / 1000) + 3600`. + +We can achieve all of this by using the `updateSession` mutation as follows: + +```graphql +mutation($input: UpdateSessionInput!) { + updateSession(input: $input) { + customer { + checkoutUrl + } + } +} +``` + +With the input fields populated with secure values: + +```js +const input = { + sessionData: [ + { + key: 'client_session_id', + value: 'secure_hashed_value', // Replace this with your secure hashed value. + }, + { + key: 'client_session_id_expiration', + value: `${Math.floor(new Date().getTime() / 1000) + 3600}`, + }, + ] +} +``` + +When the `client_session_id` or `client_session_id_expiration` values become invalid or expired, WooGraphQL generates new values with an expiration time of one hour. To avoid this, we recommend you to periodically update these values from the client side and retrieve a new `checkoutUrl` each time. + +## Reinventing Security: The Client-Side Nonce + +Next we're going to explore an advanced approach to enhance the security of our checkout procedure by generating a nonce on the client side. By doing this, and not pulling the Nonces or Auth URLs from WooGraphQL we remove any risk of leakage thru GraphQL request and further protect the end-user's data and the WordPress backend. This process will involve recreating some of PHP and WordPress core functions in JavaScript. + +1. **PHP `time` Function in JavaScript** + + Our first stop is to rewrite the PHP `time` function in JavaScript, which returns the current Unix timestamp. Here's how we can do it: + + ```js + function time() { + return Math.floor(new Date().getTime() / 1000); + } + ``` + +2. **WordPress `wp_nonce_tick` Function in JavaScript** + + Next, we translate the WordPress function `wp_nonce_tick` to JavaScript. This function returns a time-dependent variable for nonce creation: + + ```js + const MINUTE_IN_SECONDS = 60; + const HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS; + const DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS; + + function nonceTick() { + const nonceLife = DAY_IN_SECONDS; + return Math.ceil(time() / (nonceLife / 2)); + } + ``` + +3. **WordPress `wp_hash` Function in JavaScript** + + The `wp_hash` function, another WordPress core function, will be adapted to JavaScript as well. This function uses the `wp_salt` function to retrieve the salt from WordPress Salt constants, usually defined in the `wp-config.php` file. In our context, we only need the `nonce` salt. Therefore, it's crucial to ensure the `NONCE_KEY` and `NONCE_SALT` constants are set on the WordPress installation, and their values are accessible in our front-end application. + + `wp_hash` also uses `hash_hmac` and `md5` encryption to create the hash. For this, we'll utilize `crypto-js`, which you can install with `npm` using the command `npm install crypto-js`. Here's how to write `wp_hash` in JavaScript: + + ```js + import { HmacMD5 } from 'crypto-js'; + + export function wpNonceHash(data) { + const nonceSalt = process.env.NONCE_KEY + process.env.NONCE_SALT; + const hash = HmacMD5(data, nonceSalt).toString(); + + return hash; + } + ``` + +With these functions ready, we can essentially recreate the `woographql_create_nonce` PHP function employed by WooGraphQL to create the nonce. Below is the JavaScript version: + +```js +export function createNonce(action, uId, token) { + const i = nonceTick(); + + const nonce = wpNonceHash(`${i}|${action}|${uId}|${token}`).slice(-12, -2); + + return nonce; +} +``` + +In the function above: +- The `action` parameter represents the nonce action name. +- The `uId` parameter represents the end-user's session ID, either their WP User Database ID (if they are authenticated) or a random string (if they are a guest). To retrieve this value, we'll have to decode the WooCommerce Session Token used by ApolloClient. +- The `token` is our Client Session ID mentioned earlier. + +4. **Generating the URLs** + +Having the nonce alone is not enough, so let's move on to generating our URLs. The process involves three functions and the `jwt-decode` library. Install it using npm with the command `npm install jwt-decode`. + +Here's the JavaScript code to generate the URL: + +```js +import jwtDecode from 'jwt-decode'; + +function getAction(action, uId) { + switch (action) { + case 'cart': + return `load-cart_${uId}`; + case 'checkout': + return `load-checkout_${uId}`; + case 'new-payment': + return `load-account_${uId}`; + case 'change-sub': + return `change-sub_${uId}`; + case 'renew-sub': + return `renew-sub_${uId}`; + default: + throw new Error('Invalid nonce action provided.'); + } +} + +function getNonceParam(action) { + switch (action) { + case 'cart': + return '_wc_cart'; + case 'checkout': + return '_wc_checkout'; + case 'new-payment': + return '_wc_payment'; + case 'change-sub': + return '_wc_change_sub'; + case 'renew-sub': + return '_wc_renew_sub'; + default: + throw new Error('Invalid nonce action provided.'); + } +} + +export function generateUrl(sessionToken, clientSessionId, actionType) { + const decodedToken = jwtDecode(sessionToken); + if (!decodedToken?.data?.customer_id) { + throw new Error('Failed to decode session token'); + } + const uId = decodedToken.data.customer_id; + const action = getAction(actionType, uId); + + // Create nonce + const nonce = createNonce(action, uId, clientSessionId); + + // Create URL. + const param = getNonceParam(actionType); + let url = `${process.env.WORDPRESS_URL}/transfer-session?session_id=${uId}&${param}=${nonce}`; + + // Add subscription ID placeholder if subscription action. + if (actionType === 'change-sub' || actionType === 'renew-sub') { + url = `${url}&sub=%SUBSCRIPTION_ID%`; + } + + return url; +} +``` + +Note that for the `change-sub` and `renew-sub` actions from WooGraphQL Pro, we are passing a `%SUBSCRIPTION_ID%` placeholder to be replaced with a subscription database ID before use. + +To get our checkout URL, you would run: + +```js +const checkoutUrl = generateUrl(sessionToken, clientSessionId, 'checkout'); +``` + +Also, `transfer-session` is the default name of the authorization endpoint. This can be altered in the WooGraphQL settings on the WP Dashboard. + +To confirm the validity of your URL, compare it with the Auth URLs generated by WooGraphQL with the same `client_session_id` and ensure they are identical. + +## Conclusion + +With this guide, you should now be able to add a secure checkout button to your WooCommerce cart page using WooGraphQL. Keep in mind that even though we've improved security by setting a client-side session ID and expiration, these measures should be part of a broader security strategy. Always ensure to follow best practices to keep your application and user data safe. diff --git a/docs/images/auth-endpoint-and-checkout-nonce-name-settings-screenshot.png b/docs/images/auth-endpoint-and-checkout-nonce-name-settings-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..af2c294ec766466f03d794b64710ef2aff39d47d GIT binary patch literal 49338 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 literal 0 HcmV?d00001 diff --git a/docs/images/authorizing-url-settings.png b/docs/images/authorizing-url-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..166e61c508886992e47bc49c33cf85c5ab44a0ed GIT binary patch literal 73153 zcmd42Ra7Hg*S3qhyVJNsBo-#*?s zNJb@9NmbUGbIrQ1dxj~>OCrMI!GVB)Abyh)Qw9NnFaQAo?Sg^&d`HLdcmL-Lgrmqe zRhZ9*7mQIT2*?+ZZ(_o#ZkcDBo~o)xt5+X2!cYmQ@Thq_2Equ*IH=jO!&E4dIO4j( zWaMC2%u3fnY|6@!BRQo^7OHsRvr^yr^2$O4;?b^4j^Xfvez15$kfsU!5*_Lj`KoBI zoHn-d7$XcRekCQpY+BWYW^(C$=}D~DR?}7kxcGBA`ymLD^VS7I5{M!K^Y_zivwT+N z2LnBQC&1gw%L~NqOvy>=pO60fd_x|L`QJT1Hwnf5f4fz9`?v{8GC1(v^8_C*LSX+_ zU$5)7#@a@+qba^eh3XRmUZ~0=6>n+CzgKg8OW}`0;v-_gDLg?sU2k)}KFvBXBl^bXxZBaX`LrQGfjuBMt)JVhxjvi_6ODs=lRVgh*cNem&(8 z*tS+s$;zm@BbHKv-t1$U8&YcW23Xn2hcy z19-i%FJv}gBsE&Pl&H8FQa2&STIOq8PP9R_rT1p*)4wgg+yAs`XtrgX&5-U@?jK%J z|B=noy!~6PBQz^k%;k-6Nq5rZA`tSd>-GQ}XH0`RELM%O?k4g1a3olEub&D9tzqm% zwsCKKmK@+MLwAx|4foH4LBd5P8&nwm{CC}e*CUq}Y?C*YOk<4IyL&y=@hsijgn+Ts z@rOEU8t9=~YOL;yusL-J`C*&nD&__kjjz=lkF!cLkhr!CyAg2!b>_8Q0ld~}tYv1~ zIy*7s+SD=u&)B<2@*gzu8q90YpleOaZb1#CKSY-gb7->qhC@G&QL5djiJx%tF;g7W zF*>41kMx#`p&2fbwOLtbnDXN>nur9LAAI0<|s{xGQK}d+MX4{V;%S{Jc@PpdIprNb=&FgIXCU^tOF4&>mDfo`@cM-I z@ZuzrqqJq_2#6CIx0I!B@7TxY$VwwqrKX1@SCHLpolD6Db^e2$3Y)zv`u-|6Gcsg# zC{InoW6T`wYOhKA$n?cU0g{LbVz!AMTRR80u;S7{@}I%xiCy?BCQmOvp0LwDGDe18 zhOu&nF8JVuM!%S5zb!JY+5DMXR^9iDXgFt}%e;=rmOcJLkt!pl@Ip2;omVNfIXc`D zV({+9Uq+RVDbAdnM;6*fmxB5>C#KxOK-Sp8pffv0AmyPhj8k!%?xD!@JMNq4Vu-T3 z%b@J<%I{WM{26&_4H|9CDeXU+8MYJpd8!ylt|z`_5r+ew(JX)OBFTz#XC7n8_Lm>f z6I2&+8DdK^f#QrQ$QS^EKnE$S$jIC|PG4k~Y?ua}yiFtgfgeG++!N}&f*3LIY4ma{ zLOwH!$<;bT{j*3IzO_+j5$8D}`}6M*&;kQYn%~gN1rq!7Bf-X}rrqux2P>Jrc+0_Y zr{rE7LnT|!6m0Ab|JLtr#hDmg?F^2rH$hy;A~{lpEM}C(=y40q)d#Qi$1cJbmF)3L zdF$GYxl!T9Sfo>QX}fR3{5wtVy*?g;Gk@<0n>E9EIy;}3xWp1vUr*LLgf_#$sSPx& z>KZ+6L93em`jr%MlOGGfb`~l8RvFw&Zr!ktnZPG8AS4HoAx&I*WA$8r|y$ zvLGsnPM9P8pcZw0`Shh6nbp?`qyVix_9ahHM^j#1va1uAo%|WET9vk)sDURZdL!|5 z3QgOgV-PF(ij8$shBkpf8%&v!m;K!{zX?{7$g9Acnsk1CZLhFwywH{oxDm$O<9s1d zY7A)%2r=d!3UIJ%gXoBwoft@?iO1cvF_gU5iZp;p(KH0Q

|@SN0DQzIW+t1Zg=*g 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/docs/images/enable-user-session-transferring-urls-setting-screenshot.png b/docs/images/enable-user-session-transferring-urls-setting-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..2541aff9c9168b663ab9c0c97c9afa03f433afd6 GIT binary patch literal 23918 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 MPF=QK+BEoo06guG6951J literal 0 HcmV?d00001 diff --git a/docs/images/overview-screenshot.png b/docs/images/overview-screenshot.png index 2117fcf6ba90760b0cee59a890d95b111fb5bbd6..8bb87abe99732f051c19192eafa52c999d0e1caf 100644 GIT binary patch literal 104187 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 ?6&&4Wd5t)2p`Go*!sU#aBel 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

V@2m=A^5Jz={B)y`Py> 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 literal 106487 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

_&QEYJzR7*Ej;XwUCq|Y*d?(P^=UgA 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 diff --git a/docs/settings.md b/docs/settings.md index bde6e049..af6beff6 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -25,6 +25,21 @@ The default WooCommerce User Session Handler is responsible for capturing cart a The settings is simple to understand and likely to be enabled if your using a WC extension that uses a product type that isn't support by WooGraphQL out-of-box. When enabled it will substitute the missing type with the SimpleProduct type. This way you can still you the product type and possibly pull what extra data you need from the `Product`'s `metaData` field. +![Authorizing URL Settings Screenshot](images/authorizing-url-settings.png) + +## Enable User Session transferring URLs + +This settings when enabled activated the WooCommerce Session-backed nonce generator and transfer session endpoint for passing a user's session from a client to the WordPress installation, the primary use of these nonces are to create authorizing URLs that enable the user to travel to the backend as if it were a part of the front-end application. This setting is disabled if the QL Session Handler is disabled as it required for nonce generation to work. The next four settings are all about customizing the names of different parts of the authorizing URL.. + +### Endpoint for Authorizing URLs + +The endpoint (path) for transferring user sessions on the site. Defaults to `transfer-session`. + +### Cart URL nonce name, Checkout URL nonce name, and Add Payment Method URL nonce name + +The name of the nonce param for each respective URLs. They have to be unique and cannot be identical. + +Uses these settings alone is very insecure. It's highly recommended that specific measures be taken on the client to further secure the WP backend and end-user's data. ## WooGraphQL Pro Settings These settings allow you to enable or disable the GraphQL schema types, queries, and mutations for various WooCommerce extensions supported by WooGraphQL Pro. This is useful if you have one of the supported extensions installed and activated but don't need it exposed to the GraphQL API, keeping the schema lightweight. diff --git a/includes/admin/class-general.php b/includes/admin/class-general.php index 217a1070..e67833a9 100644 --- a/includes/admin/class-general.php +++ b/includes/admin/class-general.php @@ -12,19 +12,56 @@ namespace WPGraphQL\WooCommerce\Admin; */ class General extends Section { + /** + * Returns the other nonce values besides the one provided. + * + * @param string $excluded Slug of nonce value to be excluded. + * + * @return array + */ + public static function get_other_nonce_values( $excluded ) { + $nonce_values = apply_filters( + 'woographql_authorizing_url_nonce_values', + [ + 'cart_url' => woographql_setting( 'cart_url_nonce_param', '_wc_cart' ), + 'checkout_url' => woographql_setting( 'checkout_url_nonce_param', '_wc_checkout' ), + 'add_payment_method_url' => woographql_setting( 'add_payment_method_url_nonce_param', '_wc_payment' ), + ] + ); + + return array_values( array_diff_key( $nonce_values, [ $excluded => '' ] ) ); + } + /** * Returns General settings fields. * * @return array */ public static function get_fields() { + $custom_endpoint = apply_filters( 'woographql_authorizing_url_endpoint', null ); + $enabled_authorizing_url_fields = array_keys( woographql_setting( 'enable_authorizing_url_fields', [] ) ); + $all_urls_checked = apply_filters( + 'woographql_enabled_authorizing_url_fields', + [ + 'cart_url' => 'cart_url', + 'checkout_url' => 'checkout_url', + 'add_payment_method_url' => 'add_payment_method_url', + ] + ); + + $cart_url_hardcoded = defined( 'CART_URL_NONCE_PARAM' ) && ! empty( CART_URL_NONCE_PARAM ); + $checkout_url_hardcoded = defined( 'CHECKOUT_URL_NONCE_PARAM' ) && ! empty( CHECKOUT_URL_NONCE_PARAM ); + $add_payment_method_url_hardcoded = defined( 'ADD_PAYMENT_METHOD_URL_NONCE_PARAM' ) && ! empty( ADD_PAYMENT_METHOD_URL_NONCE_PARAM ); + return [ [ - 'name' => 'disable_ql_session_handler', - 'label' => __( 'Disable QL Session Handler', 'wp-graphql-woocommerce' ), - 'desc' => __( 'The QL Session Handler takes over management of WooCommerce Session Management on WPGraphQL request replacing the usage of HTTP Cookies with JSON Web Tokens.', 'wp-graphql-woocommerce' ), - 'type' => 'checkbox', - 'default' => 'off', + 'name' => 'disable_ql_session_handler', + 'label' => __( 'Disable QL Session Handler', 'wp-graphql-woocommerce' ), + 'desc' => __( 'The QL Session Handler takes over management of WooCommerce Session Management on WPGraphQL request replacing the usage of HTTP Cookies with JSON Web Tokens.', 'wp-graphql-woocommerce' ) + . ( defined( 'NO_QL_SESSION_HANDLER' ) ? __( ' This setting is disabled. The "NO_QL_SESSION_HANDLER" flag has been triggered with code', 'wp-graphql-woocommerce' ) : '' ), + 'type' => 'checkbox', + 'value' => defined( 'NO_QL_SESSION_HANDLER' ) ? 'on' : woographql_setting( 'disable_ql_session_handler', 'off' ), + 'disabled' => defined( 'NO_QL_SESSION_HANDLER' ) ? true : false, ], [ 'name' => 'enable_unsupported_product_type', @@ -33,6 +70,108 @@ class General extends Section { 'type' => 'checkbox', 'default' => 'off', ], + [ + 'name' => 'enable_authorizing_url_fields', + 'label' => __( 'Enable User Session transferring URLs', 'wp-graphql-woocommerce' ), + 'desc' => __( 'URL fields to add to the Customer type.', 'wp-graphql-woocommerce' ) + . ( defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ) ? __( ' This setting is disabled. The "WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS" flag has been triggered with code', 'wp-graphql-woocommerce' ) : '' ), + 'type' => 'multicheck', + 'options' => apply_filters( + 'woographql_settings_enable_authorizing_url_options', + [ + 'cart_url' => __( 'Cart URL. Field name: cartUrl', 'wp-graphql-woocommerce' ), + 'checkout_url' => __( 'Checkout URL. Field name: checkoutUrl', 'wp-graphql-woocommerce' ), + 'add_payment_method_url' => __( 'Add Payment Method URL. Field name: addPaymentMethodUrl', 'wp-graphql-woocommerce' ), + ] + ), + 'value' => defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ) ? $all_urls_checked : woographql_setting( 'enable_authorizing_url_fields', [] ), + 'disabled' => defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ), + ], + [ + 'name' => 'authorizing_url_endpoint', + 'label' => __( 'Endpoint for Authorizing URLs', 'wp-graphql-woocommerce' ), + 'desc' => sprintf( + /* translators: %1$s: Site URL, %2$s: WooGraphQL Auth Endpoint */ + __( 'The endpoint (path) for transferring user sessions on the site. %1$s/%2$s.', 'wp-graphql-woocommerce' ), + site_url(), + woographql_setting( 'authorizing_url_endpoint', 'transfer-session' ) + ), + 'type' => 'text', + 'default' => ! empty( $custom_endpoint ) ? $custom_endpoint : 'transfer-session', + 'disabled' => empty( $enabled_authorizing_url_fields ), + ], + [ + 'name' => 'cart_url_nonce_param', + 'label' => __( 'Cart URL nonce name', 'wp-graphql-woocommerce' ), + 'desc' => __( 'Query parameter name of the nonce included in the "cartUrl" field', 'wp-graphql-woocommerce' ) + . ( $cart_url_hardcoded ? __( ' This setting is disabled. The "CART_URL_NONCE_PARAM" flag has been set with code', 'wp-graphql-woocommerce' ) : '' ), + 'type' => 'text', + 'value' => $cart_url_hardcoded ? CART_URL_NONCE_PARAM : woographql_setting( 'cart_url_nonce_param', '_wc_cart' ), + 'disabled' => defined( 'CART_URL_NONCE_PARAM' ) || ! in_array( 'cart_url', $enabled_authorizing_url_fields, true ), + 'sanitize_callback' => function ( $value ) { + $other_nonces = self::get_other_nonce_values( 'cart_url' ); + if ( in_array( $value, $other_nonces, true ) ) { + add_settings_error( + 'cart_url_nonce_param', + 'unique', + __( 'The Cart URL nonce name field must be unique', 'wp-graphql-woocommerce' ), + 'error' + ); + + return '_wc_cart'; + } + + return $value; + }, + ], + [ + 'name' => 'checkout_url_nonce_param', + 'label' => __( 'Checkout URL nonce name', 'wp-graphql-woocommerce' ), + 'desc' => __( 'Query parameter name of the nonce included in the "checkoutUrl" field', 'wp-graphql-woocommerce' ) + . ( $checkout_url_hardcoded ? __( ' This setting is disabled. The "CHECKOUT_URL_NONCE_PARAM" flag has been set with code', 'wp-graphql-woocommerce' ) : '' ), + 'type' => 'text', + 'value' => $checkout_url_hardcoded ? CHECKOUT_URL_NONCE_PARAM : woographql_setting( 'checkout_url_nonce_param', '_wc_checkout' ), + 'disabled' => defined( 'CHECKOUT_URL_NONCE_PARAM' ) || ! in_array( 'checkout_url', $enabled_authorizing_url_fields, true ), + 'sanitize_callback' => function ( $value ) { + $other_nonces = self::get_other_nonce_values( 'checkout_url' ); + if ( in_array( $value, $other_nonces, true ) ) { + add_settings_error( + 'checkout_url_nonce_param', + 'unique', + __( 'The Checkout URL nonce name field must be unique', 'wp-graphql-woocommerce' ), + 'error' + ); + + return '_wc_checkout'; + } + + return $value; + }, + ], + [ + 'name' => 'add_payment_method_url_nonce_param', + 'label' => __( 'Add Payment Method URL nonce name', 'wp-graphql-woocommerce' ), + 'desc' => __( 'Query parameter name of the nonce included in the "addPaymentMethodUrl" field', 'wp-graphql-woocommerce' ) + . ( $add_payment_method_url_hardcoded ? __( ' This setting is disabled. The "ADD_PAYMENT_METHOD_URL_NONCE_PARAM" flag has been set with code', 'wp-graphql-woocommerce' ) : '' ), + 'type' => 'text', + 'value' => $add_payment_method_url_hardcoded ? ADD_PAYMENT_METHOD_URL_NONCE_PARAM : woographql_setting( 'add_payment_method_url_nonce_param', '_wc_payment' ), + 'disabled' => defined( 'ADD_PAYMENT_METHOD_URL_NONCE_PARAM' ) || ! in_array( 'add_payment_method_url', $enabled_authorizing_url_fields, true ), + 'sanitize_callback' => function ( $value ) { + $other_nonces = self::get_other_nonce_values( 'add_payment_method_url' ); + if ( in_array( $value, $other_nonces, true ) ) { + add_settings_error( + 'add_payment_method_url_nonce_param', + 'unique', + __( 'The Add Payment Method URL nonce name field must be unique', 'wp-graphql-woocommerce' ), + 'error' + ); + + return '_wc_payment'; + } + + return $value; + }, + ], ]; } } diff --git a/includes/class-type-registry.php b/includes/class-type-registry.php index f18874d2..c103973d 100644 --- a/includes/class-type-registry.php +++ b/includes/class-type-registry.php @@ -13,13 +13,16 @@ namespace WPGraphQL\WooCommerce; */ class Type_Registry { + /** * Registers WooGraphQL types, connections, unions, and mutations to GraphQL schema * * @param \WPGraphQL\Registry\TypeRegistry $type_registry Instance of the WPGraphQL TypeRegistry. */ public function init( \WPGraphQL\Registry\TypeRegistry $type_registry ) { - // Enumerations. + /** + * Enumerations. + */ Type\WPEnum\Backorders::register(); Type\WPEnum\Catalog_Visibility::register(); Type\WPEnum\Countries::register(); @@ -43,7 +46,9 @@ class Type_Registry { Type\WPEnum\Id_Type_Enums::register(); Type\WPEnum\Cart_Error_Type::register(); - // InputObjects. + /** + * InputObjects. + */ Type\WPInputObject\Cart_Item_Input::register(); Type\WPInputObject\Customer_Address_Input::register(); Type\WPInputObject\Product_Attribute_Input::register(); @@ -58,14 +63,18 @@ class Type_Registry { Type\WPInputObject\Product_Taxonomy_Input::register(); Type\WPInputObject\Orderby_Inputs::register(); - // Interfaces. + /** + * Interfaces. + */ Type\WPInterface\Product::register_interface(); Type\WPInterface\Attribute::register_interface( $type_registry ); Type\WPInterface\Product_Attribute::register_interface( $type_registry ); Type\WPInterface\Cart_Error::register_interface( $type_registry ); Type\WPInterface\Payment_Token::register_interface( $type_registry ); - // Objects. + /** + * Objects. + */ Type\WPObject\Meta_Data_Type::register(); Type\WPObject\Downloadable_Item_Type::register(); Type\WPObject\Coupon_Type::register(); @@ -90,11 +99,27 @@ class Type_Registry { Type\WPObject\Payment_Token_Types::register(); Type\WPObject\Country_State_Type::register(); - // Object fields. + /** + * Object fields. + */ Type\WPObject\Product_Category_Type::register_fields(); Type\WPObject\Root_Query::register_fields(); - // Connections. + // Register the following fields only if "disable_ql_session_handler" option is not on. + $ql_session_handled_enabled = ! WooCommerce_Filters::is_session_handler_disabled(); + if ( $ql_session_handled_enabled ) { + Type\WPObject\Customer_Type::register_session_handler_fields(); + } + + // Register the following fields only if "disable_ql_session_handler" option is not "on" and some fields under the "enable_authorizing_url_fields" option are "selected". + $enabled_url_fields = WooCommerce_Filters::enabled_authorizing_url_fields(); + if ( $ql_session_handled_enabled && ! empty( $enabled_url_fields ) ) { + Type\WPObject\Customer_Type::register_authorizing_url_fields( array_keys( $enabled_url_fields ) ); + } + + /** + * Connections. + */ Connection\Posts::register_connections(); Connection\WC_Terms::register_connections(); Connection\Comments::register_connections(); @@ -108,7 +133,9 @@ class Type_Registry { Connection\Shipping_Methods::register_connections(); Connection\Payment_Gateways::register_connections(); - // Mutations. + /** + * Mutations. + */ Mutation\Customer_Register::register_mutation(); Mutation\Customer_Update::register_mutation(); Mutation\Cart_Add_Item::register_mutation(); @@ -135,5 +162,6 @@ class Type_Registry { Mutation\Coupon_Delete::register_mutation(); Mutation\Payment_Method_Delete::register_mutation(); Mutation\Payment_Method_Set_Default::register_mutation(); + Mutation\Update_Session::register_mutation(); } } diff --git a/includes/class-woocommerce-filters.php b/includes/class-woocommerce-filters.php index e4183fa2..8a2428f7 100644 --- a/includes/class-woocommerce-filters.php +++ b/includes/class-woocommerce-filters.php @@ -8,6 +8,8 @@ namespace WPGraphQL\WooCommerce; +use WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce as WooGraphQL; + /** * Class WooCommerce_Filters */ @@ -43,7 +45,43 @@ class WooCommerce_Filters { * @return boolean */ public static function is_session_handler_disabled() { - return 'on' === woographql_setting( 'disable_ql_session_handler', 'off' ); + return defined( 'NO_QL_SESSION_HANDLER' ) || 'on' === woographql_setting( 'disable_ql_session_handler', 'off' ); + } + + /** + * Returns array of enabled authorizing URL field slugs. + * + * @return array + */ + public static function enabled_authorizing_url_fields() { + if ( defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ) ) { + return apply_filters( + 'woographql_enabled_authorizing_url_fields', + [ + 'cart_url' => 'cart_url', + 'checkout_url' => 'checkout_url', + 'add_payment_method_url' => 'add_payment_method_url', + ] + ); + } + return woographql_setting( 'enable_authorizing_url_fields', [] ); + } + + /** + * Return the nonce query parameter name for the provided field. + * + * @param string $field URL field slug. + * + * @return string null + */ + public static function get_authorizing_url_nonce_param_name( $field ) { + $flag_name = strtoupper( $field ); + $hardcoded_name = defined( "{$flag_name}_NONCE_PARAM" ) ? constant( "{$flag_name}_NONCE_PARAM" ) : false; + if ( ! empty( $hardcoded_name ) ) { + return $hardcoded_name; + } + + return woographql_setting( "{$field}_nonce_param", null ); } /** @@ -55,6 +93,11 @@ class WooCommerce_Filters { public static function woocommerce_session_handler( $session_class ) { if ( \WPGraphQL\Router::is_graphql_http_request() ) { $session_class = '\WPGraphQL\WooCommerce\Utils\QL_Session_Handler'; + } elseif ( WooGraphQL::auth_router_is_enabled() ) { + require_once get_includes_directory() . 'utils/class-protected-router.php'; + require_once get_includes_directory() . 'utils/class-transfer-session-handler.php'; + + $session_class = Utils\Protected_Router::is_auth_request() ? '\WPGraphQL\WooCommerce\Utils\Transfer_Session_Handler' : $session_class; } return $session_class; diff --git a/includes/class-wp-graphql-woocommerce.php b/includes/class-wp-graphql-woocommerce.php index 4c163fff..f23cce14 100644 --- a/includes/class-wp-graphql-woocommerce.php +++ b/includes/class-wp-graphql-woocommerce.php @@ -302,6 +302,7 @@ if ( ! class_exists( '\WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce' ) ) : require $include_directory_path . 'mutation/class-review-update.php'; require $include_directory_path . 'mutation/class-payment-method-delete.php'; require $include_directory_path . 'mutation/class-payment-method-set-default.php'; + require $include_directory_path . 'mutation/class-update-session.php'; // Include connection class/function files. require $include_directory_path . 'connection/wc-cpt-connection-args.php'; @@ -376,6 +377,26 @@ if ( ! class_exists( '\WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce' ) ) : }//end if } + /** + * Returns true if any authorizing urls are enabled. + * + * @return bool + */ + public static function auth_router_is_enabled() { + return defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ) + || ! empty( array_keys( woographql_setting( 'enable_authorizing_url_fields', [] ) ) ); + } + + /** + * Import and setups Protected_Router class instance. + * + * @return void + */ + public static function load_auth_router() { + require get_includes_directory() . 'utils/class-protected-router.php'; + add_action( 'after_setup_theme', [ Utils\Protected_Router::class, 'instance' ] ); + } + /** * Sets up WooGraphQL schema. */ diff --git a/includes/model/class-customer.php b/includes/model/class-customer.php index d7908bb3..cb06be3a 100644 --- a/includes/model/class-customer.php +++ b/includes/model/class-customer.php @@ -58,7 +58,7 @@ class Customer extends Model { if ( empty( $this->fields ) ) { $this->fields = [ 'ID' => function() { - return ( ! empty( $this->data->get_id() ) ) ? $this->data->get_id() : \WC()->session->_customer_id; + return ( ! empty( $this->data->get_id() ) ) ? $this->data->get_id() : \WC()->session->get_customer_id(); }, 'id' => function() { return ( ! empty( $this->data->get_id() ) ) diff --git a/includes/mutation/class-update-session.php b/includes/mutation/class-update-session.php new file mode 100644 index 00000000..0eed1ff9 --- /dev/null +++ b/includes/mutation/class-update-session.php @@ -0,0 +1,121 @@ + self::get_input_fields(), + 'outputFields' => self::get_output_fields(), + 'mutateAndGetPayload' => self::mutate_and_get_payload(), + ] + ); + } + + /** + * Defines the mutation input field configuration + * + * @return array + */ + public static function get_input_fields() { + return [ + 'sessionData' => [ + 'type' => [ 'list_of' => 'MetaDataInput' ], + 'description' => __( 'Data to be persisted in the session.', 'wp-graphql-woocommerce' ), + ], + ]; + } + + /** + * Defines the mutation output field configuration + * + * @return array + */ + public static function get_output_fields() { + return [ + 'session' => [ + 'type' => [ 'list_of' => 'MetaData' ], + 'resolve' => function ( $payload ) { + $session_data = \WC()->session->get_session_data(); + $session = []; + foreach ( $session_data as $key => $value ) { + $meta = new \stdClass(); + $meta->id = null; + $meta->key = $key; + $meta->value = maybe_unserialize( $value ); + $session[] = $meta; + } + + return $session; + }, + ], + 'customer' => [ + 'type' => 'Customer', + 'resolve' => function () { + return new Customer( 'session' ); + }, + ], + ]; + } + + /** + * Defines the mutation data modification closure. + * + * @return callable + */ + public static function mutate_and_get_payload() { + return function( $input, AppContext $context, ResolveInfo $info ) { + Cart_Mutation::check_session_token(); + + // Guard against missing input. + if ( empty( $input['sessionData'] ) ) { + throw new UserError( __( 'No session data provided', 'wp-graphql-woocommerce' ) ); + } + $session_data_input = $input['sessionData']; + + // Save session data input. + foreach ( $session_data_input as $meta ) { + \WC()->session->set( $meta['key'], $meta['value'] ); + } + + if ( is_a( \WC()->session, '\WC_Session_Handler' ) ) { + \WC()->session->save_data(); + } + + do_action( 'woographql_update_session', true ); + + // Process errors or return successful. + $notices = \WC()->session->get( 'wc_notices' ); + if ( ! empty( $notices['error'] ) ) { + $error_messages = implode( ' ', array_column( $notices['error'], 'notice' ) ); + \wc_clear_notices(); + throw new UserError( $error_messages ); + } else { + return [ 'status' => 'SUCCESS' ]; + } + }; + } +} diff --git a/includes/type/object/class-customer-type.php b/includes/type/object/class-customer-type.php index d0bb7c9e..1fc80be9 100644 --- a/includes/type/object/class-customer-type.php +++ b/includes/type/object/class-customer-type.php @@ -38,6 +38,10 @@ class Customer_Type { 'databaseId' => [ 'type' => 'Int', 'description' => __( 'The ID of the customer in the database', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + $database_id = absint( $source->ID ); + return ! empty( $database_id ) ? $database_id : null; + }, ], 'isVatExempt' => [ 'type' => 'Boolean', @@ -110,8 +114,28 @@ class Customer_Type { 'type' => 'Boolean', 'description' => __( 'Return the date customer was last updated', 'wp-graphql-woocommerce' ), ], - 'metaData' => Meta_Data_Type::get_metadata_field_definition(), + 'session' => [ + 'type' => [ 'list_of' => 'MetaData' ], + 'description' => __( 'Session data for the viewing customer', 'wp-graphql-woocommerce' ), + 'resolve' => function ( $source ) { + if ( (string) \WC()->session->get_customer_id() === (string) $source->ID ) { + $session_data = \WC()->session->get_session_data(); + $session = []; + foreach ( $session_data as $key => $value ) { + $meta = new \stdClass(); + $meta->id = null; + $meta->key = $key; + $meta->value = maybe_unserialize( $value ); + $session[] = $meta; + } + + return $session; + } + + throw new UserError( __( 'It\'s not possible to access another user\'s session data', 'wp-graphql-woocommerce' ) ); + }, + ], ], $other_fields, ); @@ -155,6 +179,8 @@ class Customer_Type { /** * Registers Customer WPObject type and related fields. + * + * @return void */ public static function register() { register_graphql_object_type( @@ -181,46 +207,6 @@ class Customer_Type { ] ); - // Register session token fields if QL_Session_Handler is enabled. - if ( 'off' === woographql_setting( 'disable_ql_session_handler', 'off' ) ) { - /** - * Register the "sessionToken" field to the "Customer" type. - */ - register_graphql_field( - 'Customer', - 'sessionToken', - [ - 'type' => 'String', - 'description' => __( 'A JWT token that can be used in future requests to for WooCommerce session identification', 'wp-graphql-woocommerce' ), - 'resolve' => function( $source ) { - if ( \get_current_user_id() === $source->ID || 'guest' === $source->id ) { - return apply_filters( 'graphql_customer_session_token', \WC()->session->build_token() ); - } - - return null; - }, - ] - ); - /** - * Register the "wooSessionToken" field to the "User" type. - */ - register_graphql_field( - 'User', - 'wooSessionToken', - [ - 'type' => 'String', - 'description' => __( 'A JWT token that can be used in future requests to for WooCommerce session identification', 'wp-graphql-woocommerce' ), - 'resolve' => function( $source ) { - if ( \get_current_user_id() === $source->userId ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - return apply_filters( 'graphql_customer_session_token', \WC()->session->build_token() ); - } - - return null; - }, - ] - ); - }//end if - /** * Register "availablePaymentMethods" field to "Customer" type. */ @@ -275,4 +261,211 @@ class Customer_Type { ] ); } + + /** + * Registers fields that require the "QL_Session_Handler" class to work. + * + * @return void + */ + public static function register_session_handler_fields() { + /** + * Register the "sessionToken" field to the "Customer" type. + */ + register_graphql_field( + 'Customer', + 'sessionToken', + [ + 'type' => 'String', + 'description' => __( 'A JWT token that can be used in future requests to for WooCommerce session identification', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + if ( \get_current_user_id() === $source->ID || 'guest' === $source->id ) { + return apply_filters( 'graphql_customer_session_token', \WC()->session->build_token() ); + } + + return null; + }, + ] + ); + /** + * Register the "wooSessionToken" field to the "User" type. + */ + register_graphql_field( + 'User', + 'wooSessionToken', + [ + 'type' => 'String', + 'description' => __( 'A JWT token that can be used in future requests to for WooCommerce session identification', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + if ( \get_current_user_id() === $source->userId ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + return apply_filters( 'graphql_customer_session_token', \WC()->session->build_token() ); + } + + return null; + }, + ] + ); + } + + + /** + * Registers selected authorizing_url_fields + * + * @param array $fields_to_register Slugs of fields. + * @return void + */ + public static function register_authorizing_url_fields( $fields_to_register ) { + if ( in_array( 'cart_url', $fields_to_register, true ) ) { + register_graphql_fields( + 'Customer', + [ + 'cartUrl' => [ + 'type' => 'String', + 'description' => __( 'A nonced link to the cart page. By default, it expires in 1 hour.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( 0 !== $current_user_id && $current_user_id !== $customer_id ) { + return null; + } + + // Build nonced url as an unauthenticated user. + $nonce_name = woographql_setting( 'cart_url_nonce_param', '_wc_cart' ); + $url = add_query_arg( + [ + 'session_id' => $customer_id, + $nonce_name => woographql_create_nonce( "load-cart_{$customer_id}" ), + ], + site_url( woographql_setting( 'authorizing_url_endpoint', 'transfer-session' ) ) + ); + + return esc_url_raw( $url ); + }, + ], + 'cartNonce' => [ + 'type' => 'String', + 'description' => __( 'A nonce for the cart page. By default, it expires in 1 hour.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( 0 !== $current_user_id && $current_user_id !== $customer_id ) { + return null; + } + + return woographql_create_nonce( "load-cart_{$customer_id}" ); + }, + ], + ] + ); + }//end if + + if ( in_array( 'checkout_url', $fields_to_register, true ) ) { + register_graphql_fields( + 'Customer', + [ + 'checkoutUrl' => [ + 'type' => 'String', + 'description' => __( 'A nonce link to the checkout page for session user. Expires in 24 hours.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( 0 !== $current_user_id && $current_user_id !== $customer_id ) { + return null; + } + + // Build nonced url as an unauthenticated user. + $nonce_name = woographql_setting( 'checkout_url_nonce_param', '_wc_checkout' ); + $url = add_query_arg( + [ + 'session_id' => $customer_id, + $nonce_name => woographql_create_nonce( "load-checkout_{$customer_id}" ), + ], + site_url( woographql_setting( 'authorizing_url_endpoint', 'transfer-session' ) ) + ); + + return esc_url_raw( $url ); + }, + ], + 'checkoutNonce' => [ + 'type' => 'String', + 'description' => __( 'A nonce for the checkout page. By default, it expires in 1 hour.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( 0 !== $current_user_id && $current_user_id !== $customer_id ) { + return null; + } + + return woographql_create_nonce( "load-checkout_{$customer_id}" ); + }, + ], + ] + ); + }//end if + + if ( in_array( 'add_payment_method_url', $fields_to_register, true ) ) { + register_graphql_fields( + 'Customer', + [ + 'addPaymentMethodUrl' => [ + 'type' => 'String', + 'description' => __( 'A nonce link to the add payment method page for the authenticated user. Expires in 24 hours.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + if ( ! is_user_logged_in() ) { + return null; + } + + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( $current_user_id !== $customer_id ) { + return null; + } + + // Build nonced url as an unauthenticated user. + $nonce_name = woographql_setting( 'add_payment_method_url_nonce_param', '_wc_payment' ); + $url = add_query_arg( + [ + 'session_id' => $customer_id, + $nonce_name => woographql_create_nonce( "load-account_{$customer_id}" ), + ], + site_url( woographql_setting( 'authorizing_url_endpoint', 'transfer-session' ) ) + ); + + return esc_url_raw( $url ); + }, + ], + 'addPaymentMethodNonce' => [ + 'type' => 'String', + 'description' => __( 'A nonce for the add payment method page. By default, it expires in 1 hour.', 'wp-graphql-woocommerce' ), + 'resolve' => function( $source ) { + // Get current customer and user ID. + $customer_id = $source->ID; + $current_user_id = get_current_user_id(); + + // Return null if current user not user being queried. + if ( 0 !== $current_user_id && $current_user_id !== $customer_id ) { + return null; + } + + return woographql_create_nonce( "load-account_{$customer_id}" ); + }, + ], + ] + ); + }//end if + } } diff --git a/includes/utils/class-protected-router.php b/includes/utils/class-protected-router.php new file mode 100644 index 00000000..beebe00a --- /dev/null +++ b/includes/utils/class-protected-router.php @@ -0,0 +1,345 @@ +is_auth_request() ) { + return; + } + + /** + * Set is_home to false + */ + $wp_query->is_home = false; + + /** + * Process the GraphQL query Request + */ + $this->process_auth_request(); + } + + /** + * Returns the name of all the valid nonce names. + * + * @return array + */ + public static function get_nonce_names() { + $enabled_authorizing_url_fields = WooCommerce_Filters::enabled_authorizing_url_fields(); + if ( empty( $enabled_authorizing_url_fields ) ) { + return []; + } + $nonce_names = []; + foreach ( array_keys( $enabled_authorizing_url_fields ) as $field ) { + $nonce_names[ $field ] = WooCommerce_Filters::get_authorizing_url_nonce_param_name( $field ); + } + return array_filter( $nonce_names ); + } + + /** + * Returns the nonce action prefix for the provided field. + * + * @param string $field Field. + * @return string|null + */ + public function get_nonce_prefix( $field ) { + switch ( $field ) { + case 'cart_url': + return 'load-cart_'; + case 'checkout_url': + return 'load-checkout_'; + case 'add_payment_method_url': + return 'load-account_'; + default: + return apply_filters( 'woographql_auth_nonce_prefix', null, $field, $this ); + } + } + + /** + * Returns the target endpoint url for the provided field. + * + * @param string $field Field. + * @return string|null + */ + public function get_target_endpoint( $field ) { + switch ( $field ) { + case 'cart_url': + return wc_get_endpoint_url( 'cart' ); + case 'checkout_url': + return wc_get_endpoint_url( 'checkout' ); + case 'add_payment_method_url': + return wc_get_account_endpoint_url( 'add-payment-method' ); + default: + return apply_filters( 'woographql_auth_target_endpoint', null, $field, $this ); + } + } + + /** + * Redirects to homepage. + * + * @return void + */ + private function redirect_to_home() { + status_header( 404 ); + wp_safe_redirect( home_url() ); + exit; + } + + /** + * Send stable version of plugin to download. + * + * @throws \Exception Session not found. + * + * @return void + */ + private function process_auth_request() { + // Bail early if session ID or nonce not found. + $nonce_names = $this->get_nonce_names(); + if ( empty( $nonce_names ) ) { + $this->redirect_to_home(); + } + + $nonce_prefix = null; + $session_id = null; + $nonce = null; + foreach ( $nonce_names as $field => $nonce_param ) { + if ( in_array( $nonce_param, array_keys( $_REQUEST ), true ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $nonce_prefix = $this->get_nonce_prefix( $field ); + $session_id = isset( $_REQUEST['session_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['session_id'] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $nonce = isset( $_REQUEST[ $nonce_param ] ) ? sanitize_text_field( wp_unslash( $_REQUEST[ $nonce_param ] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended + break; + } + } + + if ( empty( $nonce_prefix ) | empty( $session_id ) | empty( $nonce ) ) { + $this->redirect_to_home(); + } + + // Bail early if session user already authenticated. + if ( 0 !== get_current_user_id() && get_current_user_id() === absint( $session_id ) ) { + wp_safe_redirect( $this->get_target_endpoint( $field ) ); + exit; + } + + // Unauthenticate if current user not session user. + if ( 0 !== get_current_user_id() ) { + wp_clear_auth_cookie(); + wp_set_current_user( 0 ); + } + + // Verify nonce. + if ( ! woographql_verify_nonce( $nonce, $nonce_prefix . $session_id ) ) { + $this->redirect_to_home(); + } + + // If Session ID is a user ID authenticate as session user. + if ( 0 !== absint( $session_id ) ) { + wp_clear_auth_cookie(); + wp_set_current_user( $session_id ); + wp_set_auth_cookie( $session_id ); + } + + // Read session data connected to session ID. + $session_data = \WC()->session->get_session( $session_id ); + + // We were passed a session ID, yet no session was found. Let's log this and bail. + if ( empty( $session_data ) ) { + // TODO: Switch to WC Notices. + throw new \Exception( 'Could not locate WooCommerce session on checkout' ); + } + + // Reinitialize session and save session cookie before redirect. + \WC()->session->init_session_cookie(); + + // Set the session variable. + foreach ( $session_data as $key => $value ) { + \WC()->session->set( $key, maybe_unserialize( $value ) ); + } + \WC()->session->set_customer_session_cookie( true ); + + // After session has been restored on redirect to destination. + wp_safe_redirect( $this->get_target_endpoint( $field ) ); + exit; + } +} + diff --git a/includes/utils/class-ql-session-handler.php b/includes/utils/class-ql-session-handler.php index 23d81e04..de45a11d 100644 --- a/includes/utils/class-ql-session-handler.php +++ b/includes/utils/class-ql-session-handler.php @@ -98,6 +98,7 @@ class QL_Session_Handler extends WC_Session_Handler { $this->transaction_manager = Session_Transaction_Manager::get( $this ); add_action( 'woocommerce_set_cart_cookies', [ $this, 'set_customer_session_token' ], 10 ); + add_action( 'woographql_update_session', [ $this, 'set_customer_session_token' ], 10 ); add_action( 'graphql_after_resolve_field', [ $this, 'save_if_dirty' ], 10, 4 ); add_action( 'shutdown', [ $this, 'save_data' ] ); add_action( 'wp_logout', [ $this, 'destroy_session' ] ); @@ -115,7 +116,7 @@ class QL_Session_Handler extends WC_Session_Handler { public function init_session_token() { $token = $this->get_session_token(); - // Process existing session. + // Process existing session if not expired or invalid. if ( $token && ! is_wp_error( $token ) ) { $this->_customer_id = $token->data->customer_id; $this->_session_issued = $token->iat; @@ -357,7 +358,7 @@ class QL_Session_Handler extends WC_Session_Handler { $this->_session_expiration = apply_filters( 'graphql_woocommerce_cart_session_expire', // Seconds * Minutes * Hours * Days. - time() + ( 60 * 60 * 24 * 14 ) + $this->_session_issued + ( 60 * 60 * 24 * 14 ) ); // 13 Days. $this->_session_expiring = $this->_session_expiration - ( 60 * 60 * 24 ); @@ -426,4 +427,38 @@ class QL_Session_Handler extends WC_Session_Handler { */ public function set_customer_session_cookie( $set ) {} + /** + * Returns "client_session_id". "client_session_id_expiration" is used + * to keep "client_session_id" as fresh as possible. + * + * For the most strict level of security it's highly recommend these values + * be set client-side using the `updateSession` mutation. + * "client_session_id" in particular should be salted with some + * kind of client identifier like the end-user "IP" or "user-agent" + * then hashed parodying the tokens generated by + * WP's WP_Session_Tokens class. + * + * @return string + */ + public function get_client_session_id() { + // Get client session ID. + $client_session_id = $this->get( 'client_session_id', false ); + $client_session_id_expiration = absint( $this->get( 'client_session_id_expiration', 0 ) ); + + // If client session ID valid return it. + if ( false !== $client_session_id && time() < $client_session_id_expiration ) { + return $client_session_id; + } + + // Generate a new client session ID. + $client_session_id = uniqid(); + $client_session_id_expiration = time() + 3600; + $this->set( 'client_session_id', $client_session_id ); + $this->set( 'client_session_id_expiration', $client_session_id_expiration ); + $this->save_data(); + + // Return new client session ID. + return $client_session_id; + } + } diff --git a/includes/utils/class-session-transaction-manager.php b/includes/utils/class-session-transaction-manager.php index 30705a61..4171a0df 100644 --- a/includes/utils/class-session-transaction-manager.php +++ b/includes/utils/class-session-transaction-manager.php @@ -103,6 +103,7 @@ class Session_Transaction_Manager { 'updateItemQuantities', 'updateShippingMethod', 'updateCustomer', + 'updateSession', ] ); } @@ -240,7 +241,7 @@ class Session_Transaction_Manager { } // Save transaction queue. - set_transient( "woo_session_transactions_queue_{$this->session_handler->get_customer_id()}", $queue ); + set_transient( "woo_session_transactions_queue_{$this->session_handler->get_customer_id()}", $queue, 5 * MINUTE_IN_SECONDS ); } /** diff --git a/includes/utils/class-transfer-session-handler.php b/includes/utils/class-transfer-session-handler.php new file mode 100644 index 00000000..a33a55ef --- /dev/null +++ b/includes/utils/class-transfer-session-handler.php @@ -0,0 +1,92 @@ +verify_auth_request_credentials_exists() ) { + return 0; + } + if ( ! isset( $_REQUEST['session_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + return 0; + } + + return sanitize_text_field( wp_unslash( $_REQUEST['session_id'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + } + + /** + * Reads in customer ID from query parameters if specific conditions are met otherwise + * a guest ID are generated as usual. + * + * @return string + */ + public function generate_customer_id() { + $session_id = $this->get_posted_session_id(); + if ( 0 !== $session_id ) { + return $session_id; + } + + return parent::generate_customer_id(); + } + + /** + * Returns client session ID. + * + * @return string + */ + public function get_client_session_id() { + $session_id = $this->get_posted_session_id(); + $session_data = 0 !== $session_id ? $this->get_session( $session_id ) : null; + + if ( ! empty( $session_data ) ) { + $client_session_id = $session_data['client_session_id']; + $client_session_id_expiration = $session_data['client_session_id_expiration']; + } else { + $client_session_id = $this->get( 'client_session_id', false ); + $client_session_id_expiration = absint( $this->get( 'client_session_id_expiration', 0 ) ); + } + + if ( false !== $client_session_id && time() < $client_session_id_expiration ) { + return $client_session_id; + } + + $client_session_id = ''; + + return $client_session_id; + } +} diff --git a/local/.htaccess b/local/.htaccess index 12fdcfc8..2130d24f 100644 --- a/local/.htaccess +++ b/local/.htaccess @@ -4,8 +4,8 @@ # Any changes to the directives between these markers will be overwritten. RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / -SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 0646b43b..86c6f924 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -1,6 +1,6 @@ - + Generally-applicable sniffs for WordPress plugins. diff --git a/tests/_data/config.php b/tests/_data/config.php index 4f126ffc..7951570c 100644 --- a/tests/_data/config.php +++ b/tests/_data/config.php @@ -12,6 +12,19 @@ if ( ! defined( 'WPGRAPHQL_WOOCOMMERCE_AUTOLOAD' ) && false !== getenv( 'WPGRAPH define( 'WPGRAPHQL_WOOCOMMERCE_AUTOLOAD', true ); } +if ( ! defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' ) ) { + define( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS', true ); +} +if ( ! defined( 'CART_URL_NONCE_PARAM' ) ) { + define( 'CART_URL_NONCE_PARAM', '_wc_cart' ); +} +if ( ! defined( 'CHECKOUT_URL_NONCE_PARAM' ) ) { + define( 'CHECKOUT_URL_NONCE_PARAM', '_wc_checkout' ); +} +if ( ! defined( 'ADD_PAYMENT_METHOD_URL_NONCE_PARAM' ) ) { + define( 'ADD_PAYMENT_METHOD_URL_NONCE_PARAM', '_wc_payment' ); +} + if ( ! defined( 'GRAPHQL_JWT_AUTH_SECRET_KEY' ) ) { define( 'GRAPHQL_JWT_AUTH_SECRET_KEY', 'testingtesting123' ); } @@ -23,4 +36,3 @@ if ( ! defined( 'STRIPE_API_PUBLISHABLE_KEY' ) && false !== getenv( 'STRIPE_API_ if ( ! defined( 'STRIPE_API_SECRET_KEY' ) && false !== getenv( 'STRIPE_API_SECRET_KEY' ) ) { define( 'STRIPE_API_SECRET_KEY', getenv( 'STRIPE_API_SECRET_KEY' ) ); } - diff --git a/tests/_support/Helper/GraphQLE2E.php b/tests/_support/Helper/GraphQLE2E.php index da589030..d6b4ed86 100644 --- a/tests/_support/Helper/GraphQLE2E.php +++ b/tests/_support/Helper/GraphQLE2E.php @@ -705,6 +705,37 @@ class GraphQLE2E extends \Codeception\Module { $product_catalog[ $product['post_title'] ] = $product_id; } + // Create cart page. + $wpdb = $this->getModule( 'WPDb' ); + $cart_page_id = $wpdb->havePostInDatabase( + [ + 'post_type' => 'page', + 'post_title' => 'Cart', + 'post_name' => 'cart', + 'post_author' => 1, + 'post_content' => '[woocommerce_cart]', + 'post_status' => 'publish', + ] + ); + update_option( 'woocommerce_cart_page_id', $cart_page_id ); + $checkout_page_id = $wpdb->havePostInDatabase( + [ + 'post_type' => 'page', + 'post_title' => 'Checkout', + 'post_name' => 'checkout', + 'post_author' => 1, + 'post_content' => '[woocommerce_checkout]', + 'post_status' => 'publish', + ] + ); + update_option( 'woocommerce_checkout_page_id', $checkout_page_id ); + + global $wp_rewrite; + // Set the permalink structure + $wp_rewrite->set_permalink_structure( '/%postname%/' ); + // Flush the rules and tell it to write htaccess + $wp_rewrite->flush_rules( true ); + return $product_catalog; } @@ -790,6 +821,7 @@ class GraphQLE2E extends \Codeception\Module { */ public function haveAProductInTheDatabase( $args, &$product_id, $term = 'simple', &$term_id = 0 ) { $wpdb = $this->getModule( 'WPDb' ); + // Create Product $product_id = $wpdb->havePostInDatabase( array_replace_recursive( @@ -867,4 +899,22 @@ class GraphQLE2E extends \Codeception\Module { ] ); } + + public function verifyRedirect( $startUrl, $endUrl, $redirectCode = 301 ) { + $phpBrowser = $this->getModule( 'WPBrowser' ); + $guzzle = $phpBrowser->client; + + // Disable the following of redirects + $guzzle->followRedirects( false ); + + $phpBrowser->_loadPage( 'GET', $startUrl ); + $response = $guzzle->getInternalResponse(); + $responseCode = $response->getStatusCode(); + $locationHeader = $response->getHeader( 'Location' ); + + $this->assertEquals( $responseCode, $redirectCode ); + $this->assertEquals( $endUrl, $locationHeader ); + + $guzzle->followRedirects( true ); + } } diff --git a/tests/acceptance/CustomerProceedsToCheckoutCept.php b/tests/acceptance/CustomerProceedsToCheckoutCept.php new file mode 100644 index 00000000..31cd0995 --- /dev/null +++ b/tests/acceptance/CustomerProceedsToCheckoutCept.php @@ -0,0 +1,97 @@ +getCatalog(); + +// Flush permalinks. +$I->loginAsAdmin(); +$I->amOnAdminPage( 'options-permalink.php' ); +$I->click( '#submit' ); +$I->logOut(); + +// Make quick helper for managing the session token. +$request_headers = function () use ( $I, &$last_request_headers ) { + $last_request_headers = [ + 'woocommerce-session' => 'Session ' . $I->wantHTTPResponseHeaders( 'woocommerce-session' ), + ]; + + return $last_request_headers; +}; + +// Begin test. +$I->wantTo( 'add items to the cart' ); + +/** + * Add "T-Shirt" to cart and confirm response data. + */ +$add_to_cart_input = [ + 'clientMutationId' => 'someId', + 'productId' => $product_catalog['t-shirt'], + 'quantity' => 3, +]; + +$success = $I->addToCart( $add_to_cart_input ); + +$I->assertArrayNotHasKey( 'errors', $success ); +$I->assertArrayHasKey( 'data', $success ); +$I->assertArrayHasKey( 'addToCart', $success['data'] ); +$I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] ); +$I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] ); +$shirt_key = $success['data']['addToCart']['cartItem']['key']; + + +$I->wantTo( 'Set "client_session_id" and get nonced cart URL' ); +$update_session_mutation = ' + mutation($input: UpdateSessionInput!) { + updateSession(input: $input) { + session { + id + key + value + } + customer { cartUrl } + } + } +'; +$success = $I->sendGraphQLRequest( + $update_session_mutation, + [ + 'sessionData' => [ + [ + 'key' => 'client_session_id', + 'value' => 'test-client-session-id', + ], + [ + 'key' => 'client_session_id_expiration', + 'value' => (string) ( time() + 3600 ), + ], + ], + ], + $request_headers() +); + +$I->assertArrayNotHasKey( 'errors', $success ); +$I->assertArrayHasKey( 'data', $success ); +$I->assertArrayHasKey( 'updateSession', $success['data'] ); +$I->assertArrayHasKey( 'session', $success['data']['updateSession'] ); +$session = $success['data']['updateSession']['session']; +$session = array_column( $session, 'value', 'key' ); +$I->assertEquals( $session['client_session_id'], 'test-client-session-id' ); +$I->assertArrayHasKey( 'customer', $success['data']['updateSession'] ); +$I->assertArrayHasKey( 'cartUrl', $success['data']['updateSession']['customer'] ); +$cart_url = $success['data']['updateSession']['customer']['cartUrl']; + +$I->wantTo( 'Go cart page and confirm empty and session not seen' ); +$I->amOnPage( '/cart' ); +$I->see( 'Your cart is currently empty.' ); + +$I->wantTo( 'Authenticate with cart url and confirm page redirect' ); +$I->stopFollowingRedirects(); +$I->amOnUrl( $cart_url ); +$I->seeResponseCodeIs( 302 ); +$I->followRedirect(); +$I->seeInCurrentUrl( '/cart/' ); +$I->startFollowingRedirects(); + +$I->wantTo( 'Confirm cart not empty and T-shirt in cart.' ); +$I->see( 'T-Shirt' ); diff --git a/tests/functional/ProtectedRouterCest.php b/tests/functional/ProtectedRouterCest.php new file mode 100644 index 00000000..7be45362 --- /dev/null +++ b/tests/functional/ProtectedRouterCest.php @@ -0,0 +1,226 @@ +product_catalog = $I->getCatalog(); + + // Flush permalinks. + $I->loginAsAdmin(); + $I->amOnAdminPage( 'options-permalink.php' ); + $I->click( '#submit' ); + $I->logOut(); + + if ( ! defined( 'GRAPHQL_WOOCOMMERCE_SECRET_KEY' ) ) { + define( 'GRAPHQL_WOOCOMMERCE_SECRET_KEY', 'testestestestest' ); + } + } + + public function _startNewSession( FunctionalTester $I ) { + $I->wantTo( 'Start new session by adding an item to the cart' ); + /** + * Add t-shirt to the cart + */ + $success = $I->addToCart( + [ + 'clientMutationId' => 'someId', + 'productId' => $this->product_catalog['t-shirt'], + 'quantity' => 5, + ], + ); + + $I->assertArrayNotHasKey( 'errors', $success ); + $I->assertArrayHasKey( 'data', $success ); + $I->assertArrayHasKey( 'addToCart', $success['data'] ); + $I->assertArrayHasKey( 'cartItem', $success['data']['addToCart'] ); + $I->assertArrayHasKey( 'key', $success['data']['addToCart']['cartItem'] ); + $key = $success['data']['addToCart']['cartItem']['key']; + + /** + * Assert existence and validity of "woocommerce-session" HTTP header. + */ + $I->seeHttpHeaderOnce( 'woocommerce-session' ); + $session_token = $I->grabHttpHeader( 'woocommerce-session' ); + + return compact( 'key', 'session_token' ); + } + + public function _getLastRequestHeaders( $I ) { + $headers = [ + 'woocommerce-session' => 'Session ' . $I->wantHTTPResponseHeaders( 'woocommerce-session' ), + ]; + + return $headers; + } + + public function tryToProceedToCheckoutPage( FunctionalTester $I ) { + $session_data = $this->_startNewSession( $I ); + $session_token = $session_data['session_token']; + // Retrieve and decode token for session_id. + JWT::$leeway = 60; + $token_data = ! empty( $session_token ) + ? JWT::decode( $session_token, new Key( GRAPHQL_WOOCOMMERCE_SECRET_KEY, 'HS256' ) ) + : null; + $session_token = $token_data->data->customer_id; + + $I->wantTo( 'Get the session checkout URL' ); + $query = 'query { customer { checkoutNonce } }'; + $success = $I->sendGraphQLRequest( + $query, + null, + $this->_getLastRequestHeaders( $I ) + ); + + // Assert "checkoutUrl" was received. + $I->assertArrayNotHasKey( 'errors', $success ); + $I->assertArrayHasKey( 'data', $success ); + $I->assertArrayHasKey( 'customer', $success['data'] ); + $I->assertArrayHasKey( 'checkoutNonce', $success['data']['customer'] ); + $checkout_nonce = $success['data']['customer']['checkoutNonce']; + + $I->wantTo( 'Go checkout page and confirm session not seen' ); + $I->amOnPage( '/checkout' ); + $I->see( 'Your cart is currently empty.' ); + + $I->wantTo( 'Authenticate with nonced url and confirm page redirect to checkout page' ); + $I->stopFollowingRedirects(); + + $wp_url = getenv( 'WORDPRESS_URL' ); + + $I->amOnUrl( "{$wp_url}/transfer-session?session_id={$session_token}&_wc_checkout={$checkout_nonce}" ); + $I->seeResponseCodeIs( 302 ); + $I->followRedirect(); + $I->seeInCurrentUrl( '/checkout/' ); + $I->startFollowingRedirects(); + + $I->wantTo( 'Confirm session has been loaded.' ); + $I->see( 'Checkout' ); + $I->see( 'Apply Coupon' ); + $I->see( 'T-Shirt' ); + } + + + public function tryToProceedToCheckoutPageWithExpiredUrl( FunctionalTester $I ) { + $this->_startNewSession( $I ); + + $I->wantTo( 'Get the session checkout URL' ); + $query = ' + mutation($input: UpdateSessionInput!) { + updateSession(input: $input) { + session { + id + key + value + } + customer { checkoutUrl } + } + } + '; + $success = $I->sendGraphQLRequest( + $query, + [ + 'sessionData' => [ + [ + 'key' => 'client_session_id', + 'value' => 'test-client-session-id', + ], + ], + ], + $this->_getLastRequestHeaders( $I ) + ); + + // Assert updateSession was success. + $I->assertArrayNotHasKey( 'errors', $success ); + $I->assertArrayHasKey( 'data', $success ); + $I->assertArrayHasKey( 'updateSession', $success['data'] ); + $I->assertArrayHasKey( 'session', $success['data']['updateSession'] ); + $session = $success['data']['updateSession']['session']; + $session = array_column( $session, 'value', 'key' ); + $I->assertEquals( $session['client_session_id'], 'test-client-session-id' ); + + // Assert "checkoutUrl" was received. + $I->assertArrayHasKey( 'customer', $success['data']['updateSession'] ); + $I->assertArrayHasKey( 'checkoutUrl', $success['data']['updateSession']['customer'] ); + $expired_checkout_url = $success['data']['updateSession']['customer']['checkoutUrl']; + + $I->wantTo( 'Invalidate Checkout URL by updating the "client_session_id"' ); + $success = $I->sendGraphQLRequest( + $query, + [ + 'sessionData' => [ + [ + 'key' => 'client_session_id', + 'value' => 'new-test-client-session-id', + ], + ], + ], + $this->_getLastRequestHeaders( $I ) + ); + + // Assert updateSession was success. + $I->assertArrayNotHasKey( 'errors', $success ); + $I->assertArrayHasKey( 'data', $success ); + $I->assertArrayHasKey( 'updateSession', $success['data'] ); + $I->assertArrayHasKey( 'session', $success['data']['updateSession'] ); + $session = $success['data']['updateSession']['session']; + $session = array_column( $session, 'value', 'key' ); + $I->assertEquals( $session['client_session_id'], 'new-test-client-session-id' ); + + $I->wantTo( 'Go checkout page and confirm session not seen' ); + $I->amOnPage( '/checkout' ); + $I->see( 'Your cart is currently empty.' ); + + $I->wantTo( 'Attempt to authenticate with expired url and confirm page redirect to checkout page' ); + $I->stopFollowingRedirects(); + $I->amOnUrl( $expired_checkout_url ); + $I->seeResponseCodeIs( 302 ); + $I->followRedirect(); + $I->dontSeeInCurrentUrl( '/checkout/' ); + $I->startFollowingRedirects(); + } + + + public function tryToProceedToCheckoutPageWithInvalidNonce( FunctionalTester $I ) { + $session_data = $this->_startNewSession( $I ); + $session_token = $session_data['session_token']; + // Retrieve and decode token for session_id. + JWT::$leeway = 60; + $token_data = ! empty( $session_token ) + ? JWT::decode( $session_token, new Key( GRAPHQL_WOOCOMMERCE_SECRET_KEY, 'HS256' ) ) + : null; + $session_token = $token_data->data->customer_id; + + $I->wantTo( 'Get the session checkout URL' ); + $query = 'query { customer { checkoutUrl } }'; + $success = $I->sendGraphQLRequest( + $query, + null, + $this->_getLastRequestHeaders( $I ) + ); + + // Assert "checkoutUrl" was received. + $I->assertArrayNotHasKey( 'errors', $success ); + $I->assertArrayHasKey( 'data', $success ); + $I->assertArrayHasKey( 'customer', $success['data'] ); + $I->assertArrayHasKey( 'checkoutUrl', $success['data']['customer'] ); + + $I->wantTo( 'Go checkout page and confirm session not seen' ); + $I->amOnPage( '/checkout' ); + $I->see( 'Your cart is currently empty.' ); + + $I->wantTo( 'Attempt to authenticate with nonced url and confirm page redirect to checkout page' ); + $I->stopFollowingRedirects(); + + $wp_url = getenv( 'WORDPRESS_URL' ); + + $I->amOnUrl( "{$wp_url}/transfer-session?session_id={$session_token}&_wc_checkout=12345" ); + $I->seeResponseCodeIs( 302 ); + $I->followRedirect(); + $I->dontSeeInCurrentUrl( '/checkout/' ); + $I->startFollowingRedirects(); + } +} diff --git a/tests/wpunit/CustomerQueriesTest.php b/tests/wpunit/CustomerQueriesTest.php index 388793f5..e3d01bad 100644 --- a/tests/wpunit/CustomerQueriesTest.php +++ b/tests/wpunit/CustomerQueriesTest.php @@ -1,6 +1,5 @@ assertQuerySuccessful( $response, $expected ); } + + public function testAuthorizingUrlFields() { + // Reinitialize WC session with QL_Session_Handler set. + add_filter( + 'woocommerce_session_handler', + function( $session_class ) { + return '\WPGraphQL\WooCommerce\Utils\QL_Session_Handler'; + } + ); + \WC()->initialize_session(); + + // Create customer for later use. + $customer_id = $this->factory->customer->create(); + + // Create auth URLs query. + $query = ' + query($id: ID) { + customer(id: $id) { + id + cartUrl + cartNonce + checkoutUrl + checkoutNonce + addPaymentMethodUrl + addPaymentMethodNonce + } + } + '; + + /** + * Assert NULL values when querying as admin + */ + $this->loginAsShopManager(); + $variables = [ 'id' => $this->toRelayId( 'customer', $customer_id ) ]; + $response = $this->graphql( compact( 'query', 'variables' ) ); + $expected = [ + $this->expectedField( 'customer.id', $this->toRelayId( 'customer', $customer_id ) ), + $this->expectedField( 'customer.cartUrl', self::IS_NULL ), + $this->expectedField( 'customer.cartNonce', self::IS_NULL ), + $this->expectedField( 'customer.checkoutUrl', self::IS_NULL ), + $this->expectedField( 'customer.checkoutNonce', self::IS_NULL ), + $this->expectedField( 'customer.addPaymentMethodUrl', self::IS_NULL ), + $this->expectedField( 'customer.addPaymentMethodNonce', self::IS_NULL ), + ]; + $this->assertQuerySuccessful( $response, $expected ); + + /** + * Assert NOT NULL values when querying as admin + */ + $this->loginAs( $customer_id ); + $response = $this->graphql( compact( 'query' ) ); + $expected = [ + $this->expectedField( 'customer.id', $this->toRelayId( 'customer', $customer_id ) ), + $this->expectedField( 'customer.cartUrl', self::NOT_NULL ), + $this->expectedField( 'customer.cartNonce', self::NOT_NULL ), + $this->expectedField( 'customer.checkoutUrl', self::NOT_NULL ), + $this->expectedField( 'customer.checkoutNonce', self::NOT_NULL ), + $this->expectedField( 'customer.addPaymentMethodUrl', self::NOT_NULL ), + $this->expectedField( 'customer.addPaymentMethodNonce', self::NOT_NULL ), + ]; + $this->assertQuerySuccessful( $response, $expected ); + } } diff --git a/tests/wpunit/ProtectedRouterTest.php b/tests/wpunit/ProtectedRouterTest.php new file mode 100644 index 00000000..224ef98e --- /dev/null +++ b/tests/wpunit/ProtectedRouterTest.php @@ -0,0 +1,54 @@ +assertEquals( 'transfer-session', apply_filters( 'woographql_authorizing_url_endpoint', \WPGraphQL\WooCommerce\Utils\Protected_Router::$route ) ); + } + + /** + * Test to make sure that the rewrite rules properly include the graphql route + */ + public function testGraphQLRewriteRule() { + global $wp_rewrite; + $route = apply_filters( 'woographql_authorizing_url_endpoint', \WPGraphQL\WooCommerce\Utils\Protected_Router::$route ); + $this->assertArrayHasKey( $route . '/?$', $wp_rewrite->extra_rules_top ); + } + + public function testAddQueryVar() { + $query_vars = []; + $router = \WPGraphQL\WooCommerce\Utils\Protected_Router::instance(); + $actual = $router->add_query_var( $query_vars ); + $this->assertEquals( $actual, [ apply_filters( 'woographql_authorizing_url_endpoint', \WPGraphQL\WooCommerce\Utils\Protected_Router::$route ) ] ); + } + + public function testGetNonceNames() { + $router = \WPGraphQL\WooCommerce\Utils\Protected_Router::instance(); + $this->assertEquals( + [ + 'cart_url' => '_wc_cart', + 'checkout_url' => '_wc_checkout', + 'add_payment_method_url' => '_wc_payment', + ], + $router->get_nonce_names() + ); + } + + public function testGetNoncePrefix() { + $router = \WPGraphQL\WooCommerce\Utils\Protected_Router::instance(); + $this->assertEquals( 'load-cart_', $router->get_nonce_prefix( 'cart_url' ) ); + $this->assertEquals( 'load-checkout_', $router->get_nonce_prefix( 'checkout_url' ) ); + $this->assertEquals( 'load-account_', $router->get_nonce_prefix( 'add_payment_method_url' ) ); + $this->assertEquals( null, $router->get_nonce_prefix( 'invalid' ) ); + } + + public function testGetTargetEndpoint() { + $router = \WPGraphQL\WooCommerce\Utils\Protected_Router::instance(); + $this->assertEquals( wc_get_endpoint_url( 'cart' ), $router->get_target_endpoint( 'cart_url' ) ); + $this->assertEquals( wc_get_endpoint_url( 'checkout' ), $router->get_target_endpoint( 'checkout_url' ) ); + $this->assertEquals( wc_get_account_endpoint_url( 'add-payment-method' ), $router->get_target_endpoint( 'add_payment_method_url' ) ); + $this->assertEquals( null, $router->get_nonce_prefix( 'invalid' ) ); + } +} diff --git a/tests/wpunit/QLSessionHandlerTest.php b/tests/wpunit/QLSessionHandlerTest.php index e7aaddd4..3a71fada 100644 --- a/tests/wpunit/QLSessionHandlerTest.php +++ b/tests/wpunit/QLSessionHandlerTest.php @@ -148,4 +148,28 @@ class QLSessionHandlerTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGrap $this->assertNotEquals( $old_token, $new_token, 'Tokens should not match' ); } + + public function test_get_client_session_id() { + // Create session handler. + $session = new QL_Session_Handler(); + + // Assert an random string returned, when valid "client_session_id" and "client_session_id_expiration" are not set. + $session->init_session_cookie(); + $this->assertNotEquals( '', $session->get_client_session_id() ); + + $session->init_session_cookie(); + $_REQUEST['_wc_cart'] = 'test'; + $this->assertNotEquals( '', $session->get_client_session_id() ); + + $session->init_session_cookie(); + $session->set( 'client_session_id', 'test-client-session-id' ); + $session->set( 'client_session_id_expiration', '1' ); + $this->assertNotEquals( 'test-client-session-id', $session->get_client_session_id() ); + + // Assert "test-client-session-id" is returned, when valid "client_session_id" and "client_session_id_expiration" are set. + $session->init_session_cookie(); + $session->set( 'client_session_id', 'test-client-session-id' ); + $session->set( 'client_session_id_expiration', ( time() + 3600 ) ); + $this->assertEquals( 'test-client-session-id', $session->get_client_session_id() ); + } } diff --git a/tests/wpunit/TransferSessionHandlerTest.php b/tests/wpunit/TransferSessionHandlerTest.php new file mode 100644 index 00000000..29937547 --- /dev/null +++ b/tests/wpunit/TransferSessionHandlerTest.php @@ -0,0 +1,73 @@ +session = new Transfer_Session_Handler(); + } + + public function testGenerateCustomerId() { + // Assert random customer ID is generated when invalid creds are provided. + $this->session->init_session_cookie(); + $this->assertNotEquals( 'test-session-id', $this->session->get_customer_id() ); + + $_REQUEST['_wc_cart'] = 'test'; + $this->session->init_session_cookie(); + $this->assertNotEquals( 'test-session-id', $this->session->get_customer_id() ); + + unset( $_REQUEST['_wc_cart'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $_REQUEST['session_id'] = 'test-session-id'; + $this->session->init_session_cookie(); + $this->assertNotEquals( 'test-session-id', $this->session->get_customer_id() ); + + // Assert "session_id" is returned, if proper creds are provided. + $_REQUEST['_wc_cart'] = 'test'; + $_REQUEST['session_id'] = 'test-session-id'; + $this->session->init_session_cookie(); + $this->assertEquals( 'test-session-id', $this->session->get_customer_id() ); + } + + public function testGetClientSessionId() { + // Assert an empty string is return, when invalid creds are provided. + $this->session->init_session_cookie(); + $this->assertEquals( '', $this->session->get_client_session_id() ); + + $this->session->init_session_cookie(); + $_REQUEST['_wc_cart'] = 'test'; + $this->assertEquals( '', $this->session->get_client_session_id() ); + + $this->session->init_session_cookie(); + unset( $_REQUEST['_wc_cart'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $_REQUEST['session_id'] = $this->session->get_client_session_id(); + $this->assertEquals( '', $this->session->get_client_session_id() ); + + // Assert "test-client-session-id" is returned, if proper creds are provided. + $this->session->init_session_cookie(); + $this->session->set( 'client_session_id', 'test-client-session-id' ); + $this->session->set( 'client_session_id_expiration', ( time() + 3600 ) ); + $_REQUEST['_wc_cart'] = 'test'; + $_REQUEST['session_id'] = $this->session->get_customer_id(); + $this->assertEquals( 'test-client-session-id', $this->session->get_client_session_id() ); + + // Assert an empty string is returned, because "client_session_id_expiration" is expired. + $this->session->init_session_cookie(); + $this->session->set( 'client_session_id', 'test-client-session-id-2' ); + $this->session->set( 'client_session_id_expiration', '1' ); + $_REQUEST['_wc_cart'] = 'test'; + $_REQUEST['session_id'] = $this->session->get_customer_id(); + $this->assertEquals( '', $this->session->get_client_session_id() ); + } +} diff --git a/tests/wpunit/UpdateSessionMutationTest.php b/tests/wpunit/UpdateSessionMutationTest.php new file mode 100644 index 00000000..f38afad0 --- /dev/null +++ b/tests/wpunit/UpdateSessionMutationTest.php @@ -0,0 +1,66 @@ +factory->customer->create(); + $this->loginAs( $registered ); + + // Create query. + $query = ' + mutation($input: UpdateSessionInput!) { + updateSession(input: $input) { + session { + id + key + value + } + customer { + id + session { + id + key + value + } + } + } + } + '; + + $variables = [ + 'input' => [ + 'sessionData' => [ + [ + 'key' => 'test-2', + 'value' => 'test-value', + ], + ], + ], + ]; + + /** + * Assert working. + */ + $response = $this->graphql( compact( 'query', 'variables' ) ); + $expected = [ + $this->expectedObject( + 'updateSession.session.#', + [ + $this->expectedField( 'key', 'test-2' ), + $this->expectedField( 'value', 'test-value' ), + ] + ), + $this->expectedField( 'updateSession.customer.id', $this->toRelayId( 'customer', $registered ) ), + $this->expectedObject( + 'updateSession.customer.session.#', + [ + $this->expectedField( 'key', 'test-2' ), + $this->expectedField( 'value', 'test-value' ), + ] + ), + ]; + + $this->assertQuerySuccessful( $response, $expected ); + } +} diff --git a/tests/wpunit/bootstrap.php b/tests/wpunit/bootstrap.php index 863c96a9..546aceef 100644 --- a/tests/wpunit/bootstrap.php +++ b/tests/wpunit/bootstrap.php @@ -1,8 +1,4 @@