namespace = 'wpcom/v2'; $this->rest_base = 'application-password-extras'; add_action( 'rest_api_init', array( $this, 'register_routes' ) ); } /** * Register routes. */ public function register_routes() { register_rest_route( $this->namespace, $this->rest_base . '/abilities', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_abilities' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), ) ); register_rest_route( $this->namespace, $this->rest_base . '/admin-ajax', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_abilities' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), ) ); } /** * Checks if a given request has access to application password extras. * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_item_permissions_check( $request ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( ! is_user_logged_in() ) { return new WP_Error( 'rest_forbidden', __( 'Sorry, you must be logged in to access this endpoint.', 'jetpack' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves the application password extras abilities. * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_abilities( $request ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable if ( ! class_exists( 'Jetpack_Application_Password_Extras' ) ) { return new WP_Error( 'rest_application_password_extras_unavailable', __( 'Application password extras functionality is not available.', 'jetpack' ), array( 'status' => 503 ) ); } return rest_ensure_response( Jetpack_Application_Password_Extras::get_abilities() ); } } wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Application_Password_Extras' );