REST API: Declare unfiltered_html capability in links.

Because user capabilities can be modified at runtime, the REST API needs to expose them in some evaluated but declarative manner for clients to interpret. JSON Hyper Schema targetSchema provides an appropriate paradigm for doing so.

Merges [43682] to trunk.

Props timothyblynjacobs.

Fixes #45014.

Built from https://develop.svn.wordpress.org/trunk@43974


git-svn-id: http://core.svn.wordpress.org/trunk@43806 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Aaron Jorbin 2018-12-11 04:13:23 +00:00
parent 8169b49e75
commit e945a21758
2 changed files with 21 additions and 1 deletions

View File

@ -1781,6 +1781,10 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
$rels[] = 'https://api.w.org/action-publish'; $rels[] = 'https://api.w.org/action-publish';
} }
if ( current_user_can( 'unfiltered_html' ) ) {
$rels[] = 'https://api.w.org/action-unfiltered-html';
}
if ( 'post' === $post_type->name ) { if ( 'post' === $post_type->name ) {
if ( current_user_can( $post_type->cap->edit_others_posts ) && current_user_can( $post_type->cap->publish_posts ) ) { if ( current_user_can( $post_type->cap->edit_others_posts ) && current_user_can( $post_type->cap->publish_posts ) ) {
$rels[] = 'https://api.w.org/action-sticky'; $rels[] = 'https://api.w.org/action-sticky';
@ -2190,6 +2194,22 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
); );
} }
$links[] = array(
'rel' => 'https://api.w.org/action-unfiltered-html',
'title' => __( 'The current user can post unfiltered HTML markup and JavaScript.' ),
'href' => $href,
'targetSchema' => array(
'type' => 'object',
'properties' => array(
'content' => array(
'raw' => array(
'type' => 'string',
),
),
),
),
);
if ( 'post' === $this->post_type ) { if ( 'post' === $this->post_type ) {
$links[] = array( $links[] = array(
'rel' => 'https://api.w.org/action-sticky', 'rel' => 'https://api.w.org/action-sticky',

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.1-alpha-43973'; $wp_version = '5.1-alpha-43974';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.