fix: can read for metadata section #184

This commit is contained in:
vnmedeiros 2022-08-12 15:39:26 -03:00
parent 6fe458b1e3
commit 554c462290
2 changed files with 39 additions and 3 deletions

View File

@ -240,7 +240,13 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
*/ */
public function get_item( $request ) { public function get_item( $request ) {
$metadata_section_id = $request['metadata_section_id']; $metadata_section_id = $request['metadata_section_id'];
$result = $this->metadata_sections_repository->fetch($metadata_section_id, 'OBJECT'); if($metadata_section_id == \Tainacan\Entities\Metadata_Section::$default_section_slug) {
$collection_id = is_numeric($request['collection_id']) ? (int)$request['collection_id'] : null;
$result = $this->metadata_sections_repository->get_default_section($collection_id);
} else {
$result = $this->metadata_sections_repository->fetch($metadata_section_id, 'OBJECT');
}
if (! $result instanceof Entities\Metadata_Section) { if (! $result instanceof Entities\Metadata_Section) {
return new \WP_REST_Response([ return new \WP_REST_Response([
'error_message' => __('Metadata section with this ID was not found', 'tainacan'), 'error_message' => __('Metadata section with this ID was not found', 'tainacan'),
@ -263,8 +269,14 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
} }
$collection = $this->collection_repository->fetch($request['collection_id']); $collection = $this->collection_repository->fetch($request['collection_id']);
if($collection instanceof Entities\Collection && $collection->can_read()){ if($collection instanceof Entities\Collection && $collection->can_read()) {
$metadatum_section = $this->metadata_sections_repository->fetch($request['metadata_section_id']); $metadata_section_id = $request['metadata_section_id'];
if($metadata_section_id == \Tainacan\Entities\Metadata_Section::$default_section_slug) {
$metadatum_section = $this->metadata_sections_repository->get_default_section($collection);
} else {
$metadatum_section = $this->metadata_sections_repository->fetch($metadata_section_id);
}
return $metadatum_section instanceof Entities\Metadata_Section && $metadatum_section->can_read(); return $metadatum_section instanceof Entities\Metadata_Section && $metadatum_section->can_read();
} }

View File

@ -455,4 +455,28 @@ class Metadata_Sections extends Repository {
} }
return $result; return $result;
} }
/**
* Check if $user can read the entity
*
* @param Entities\Metadata_Section|Entities\Entity $entity
* @param int|\WP_User|null $user default is null for the current user
*
* @return boolean
* @throws \Exception
*/
public function can_read( Entities\Entity $entity, $user = null ) {
if ( is_null($entity) )
return false;
if ($entity instanceof Entities\Metadata_Section && $entity->get_id() == Entities\Metadata_Section::$default_section_slug ) {
$collection = $entity->get_collection();
if($collection instanceof Entities\Collection) {
return $collection->can_read();
}
return false;
}
return parent::can_read($entity, $user);
}
} }