fix: roles endpoint args
This commit is contained in:
parent
9fa4a54ac5
commit
93a9afcf16
|
@ -30,7 +30,7 @@ class REST_Roles_Controller extends REST_Controller {
|
||||||
'methods' => \WP_REST_Server::READABLE,
|
'methods' => \WP_REST_Server::READABLE,
|
||||||
'callback' => array($this, 'get_items'),
|
'callback' => array($this, 'get_items'),
|
||||||
'permission_callback' => array($this, 'get_items_permissions_check'),
|
'permission_callback' => array($this, 'get_items_permissions_check'),
|
||||||
'args' => $this->get_endpoint_args(\WP_REST_Server::DELETABLE)
|
'args' => $this->get_endpoint_args(\WP_REST_Server::READABLE)
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'methods' => \WP_REST_Server::CREATABLE,
|
'methods' => \WP_REST_Server::CREATABLE,
|
||||||
|
@ -227,8 +227,6 @@ class REST_Roles_Controller extends REST_Controller {
|
||||||
], 400);
|
], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
$role = $roles[$role_slug];
|
|
||||||
|
|
||||||
if ( isset($request['name']) ) {
|
if ( isset($request['name']) ) {
|
||||||
|
|
||||||
$name = esc_html( esc_sql( $request['name'] ) );
|
$name = esc_html( esc_sql( $request['name'] ) );
|
||||||
|
@ -463,33 +461,44 @@ class REST_Roles_Controller extends REST_Controller {
|
||||||
* @return array|mixed
|
* @return array|mixed
|
||||||
*/
|
*/
|
||||||
public function get_endpoint_args( $method = null ) {
|
public function get_endpoint_args( $method = null ) {
|
||||||
$endpoint_args = [
|
$endpoint_args = [];
|
||||||
'role' => [
|
|
||||||
'description' => __( 'Role slug', 'tainacan' ),
|
|
||||||
'type' => 'string',
|
|
||||||
'required' => true,
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
switch ( $method ) {
|
switch ( $method ) {
|
||||||
case \WP_REST_Server::CREATABLE:
|
|
||||||
case \WP_REST_Server::EDITABLE:
|
case \WP_REST_Server::EDITABLE:
|
||||||
|
$endpoint_args['role'] = array(
|
||||||
|
'description' => __( 'Role slug', 'tainacan' ),
|
||||||
|
'type' => 'string',
|
||||||
|
'required' => true
|
||||||
|
);
|
||||||
|
$endpoint_args['add_cap'] = array(
|
||||||
|
'description' => __( 'the capability slug to be add', 'tainacan' ),
|
||||||
|
'type' => 'string',
|
||||||
|
'required' => false
|
||||||
|
);
|
||||||
|
$endpoint_args['remove_cap'] = array(
|
||||||
|
'description' => __( 'The capability slug to be removed', 'tainacan' ),
|
||||||
|
'type' => 'string',
|
||||||
|
'required' => false
|
||||||
|
);
|
||||||
|
case \WP_REST_Server::CREATABLE:
|
||||||
$endpoint_args['name'] = array(
|
$endpoint_args['name'] = array(
|
||||||
'description' => __('New role name', 'tainacan'),
|
'description' => __('New role name', 'tainacan'),
|
||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'required' => true
|
'required' => $method == \WP_REST_Server::CREATABLE
|
||||||
);
|
);
|
||||||
$endpoint_args['capabilities'] = array(
|
$endpoint_args['capabilities'] = array(
|
||||||
'description' => __('Array of capabilities, where the keys are capability slugs and values are booleans', 'tainacan'),
|
'description' => __('Array of capabilities, where the keys are capability slugs and values are booleans', 'tainacan'),
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'validate_callback' => [$this, 'validate_roles_capabilities_arg']
|
'validate_callback' => [$this, 'validate_roles_capabilities_arg']
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( $method == \WP_REST_Server::CREATABLE )
|
|
||||||
unset($endpoint_args['role']);
|
|
||||||
break;
|
break;
|
||||||
case \WP_REST_Server::READABLE:
|
case \WP_REST_Server::READABLE:
|
||||||
case \WP_REST_Server::DELETABLE:
|
case \WP_REST_Server::DELETABLE:
|
||||||
|
$endpoint_args['role'] = array(
|
||||||
|
'description' => __( 'Role slug', 'tainacan' ),
|
||||||
|
'type' => 'string',
|
||||||
|
'required' => $method == \WP_REST_Server::DELETABLE
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,12 @@ class TAINACAN_REST_Roles_Controller extends TAINACAN_UnitApiTestCase {
|
||||||
$data = $name_response->get_data();
|
$data = $name_response->get_data();
|
||||||
$this->assertArrayHasKey('tainacan-new-role', $data);
|
$this->assertArrayHasKey('tainacan-new-role', $data);
|
||||||
$this->assertEquals('New role', $data['tainacan-new-role']['name']);
|
$this->assertEquals('New role', $data['tainacan-new-role']['name']);
|
||||||
|
|
||||||
|
$request->set_query_params(['role' => 'tainacan-new-role']);
|
||||||
|
$name_response = $this->server->dispatch($request);
|
||||||
|
$data = $name_response->get_data();
|
||||||
|
$this->assertArrayHasKey('tainacan-new-role', $data);
|
||||||
|
$this->assertEquals('New role', $data['tainacan-new-role']['name']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_create_remove_roles() {
|
public function test_create_remove_roles() {
|
||||||
|
|
Loading…
Reference in New Issue