PrincipalResolver.php
<?php
declare(strict_types=1);
namespace Automattic\WooCommerce\Api\Infrastructure;
/**
* Default principal resolver for the WooCommerce dual code+GraphQL API.
*
* Plugins that implement their own API and authenticate against something
* other than WordPress users (e.g. an app token) must ship their own resolver
* at `<plugin-api-namespace>\Infrastructure\PrincipalResolver` with a
* `resolve_principal( \WP_REST_Request ): T` (or zero-arg) method whose
* return type is the plugin's own principal class. ApiBuilder detects it
* during generation and routes the autogenerated controller through it.
*
* The \WP_REST_Request parameter is optional; the default resolver doesn't
* inspect headers (WordPress's auth pipeline has already populated the global
* current user by the time this fires).
*/
final class PrincipalResolver {
/**
* Resolve the request principal.
*
* Anonymous requests are signalled by a Principal whose underlying
* `WP_User` has `ID === 0` (see {@see Principal::is_authenticated()}).
*/
public function resolve_principal(): Principal {
return new Principal( wp_get_current_user() );
}
}