Skip to content
Snippets Groups Projects
Commit 210fad7b authored by Kevin Kaland's avatar Kevin Kaland
Browse files

Issue #2359213: Fix usage of entity access.

Also fixes file usage handling for FillPdfForm.
parent a1e31c72
No related branches found
Tags 8.x-4.0-alpha1
No related merge requests found
......@@ -5,7 +5,6 @@ fillpdf.settings:
_form: '\Drupal\fillpdf\Form\FillPdfSettingsForm'
_title: 'FillPDF settings'
requirements:
# TOOD: Use entity access instead
_permission: 'administer pdfs'
options:
_admin_route: TRUE
......@@ -16,8 +15,6 @@ fillpdf.forms_admin:
_form: '\Drupal\fillpdf\Form\FillPdfOverviewForm'
_title: 'FillPDF'
requirements:
# TOOD: Use entity access instead
_permission: 'administer pdfs'
_permission: 'administer pdfs'
options:
_admin_route: TRUE
......@@ -35,7 +32,7 @@ entity.fillpdf_form.edit_form:
_entity_form: fillpdf_form.edit
_title: 'Edit FillPDF form'
requirements:
_permission: 'administer pdfs' # todo: do we have an administer own pdfs perm?
_entity_access: fillpdf_form.update
options:
_admin_route: TRUE
......@@ -45,7 +42,7 @@ entity.fillpdf_form.delete_form:
_entity_form: fillpdf_form.delete
_title: 'Delete FillPDF form'
requirements:
_permission: 'administer pdfs' # todo: do we have an administer own pdfs perm?
_entity_access: fillpdf_form.delete
options:
_admin_route: TRUE
......@@ -55,14 +52,6 @@ entity.fillpdf_form_field.edit_form:
_entity_form: fillpdf_form_field.edit
_title: 'Edit FillPDF form field'
requirements:
_permission: 'administer pdfs' # todo: do we have an administer own pdfs perm?
_entity_access: fillpdf_form_field.update
options:
_admin_route: TRUE
fillpdf_file_context.settings:
path: 'admin/structure/fillpdf_file_context'
defaults:
_form: '\Drupal\fillpdf\Entity\Form\FillPdfFileContextSettingsForm'
_title: 'FillPDF file context settings'
requirements:
_permission: 'administer fillpdf file context entities'
......@@ -27,6 +27,7 @@ use Drupal\fillpdf\Service\FillPdfAdminFormHelper;
* "edit" = "Drupal\fillpdf\Form\FillPdfFormForm",
* "delete" = "Drupal\fillpdf\Form\FillPdfFormDeleteForm",
* },
* "access" = "Drupal\fillpdf\FillPdfFormAccessControlHandler",
* },
* admin_permission = "administer pdfs",
* base_table = "fillpdf_forms",
......
......@@ -16,6 +16,8 @@ use Drupal\fillpdf\FillPdfFormFieldInterface;
* Defines the entity for managing PDF fields associated with uploaded FillPDF
* forms.
*
* Uses the same access handler as fillpdf_form.
*
* @ContentEntityType(
* id = "fillpdf_form_field",
* label = @Translation("FillPDF form field"),
......@@ -24,6 +26,7 @@ use Drupal\fillpdf\FillPdfFormFieldInterface;
* "form" = {
* "edit" = "Drupal\fillpdf\Form\FillPdfFormFieldForm",
* },
* "access": "Drupal\fillpdf\FillPdfFormAccessControlHandler",
* },
* admin_permission = "administer pdfs",
* base_table = "fillpdf_fields",
......
<?php
/**
* @file
* Contains Drupal\fillpdf\FillPdfFormAccessControlHandler.
*/
namespace Drupal\fillpdf;
use Drupal\Core\Entity\EntityAccessControlHandler;
use Drupal\Core\Entity\EntityHandlerInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Access controller for the FillPDF form entity.
*
* @see \Drupal\fillpdf\Entity\FillPdfForm.
*/
class FillPdfFormAccessControlHandler extends EntityAccessControlHandler {
/**
* {@inheritdoc}
*/
protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
switch ($operation) {
case 'view':
case 'update':
case 'delete':
return AccessResult::allowedIfHasPermission($account, 'administer pdfs');
break;
default:
return AccessResult::neutral();
break;
}
}
}
......@@ -12,30 +12,17 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\Url;
use Drupal\file\Entity\File;
use Drupal\file\FileInterface;
use Drupal\file\FileUsage\FileUsageInterface;
use Drupal\fillpdf\FillPdfFormInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class FillPdfFormDeleteForm extends ContentEntityConfirmFormBase {
use StringTranslationTrait;
/** @var \Drupal\file\FileUsage\FileUsageInterface $fileUsage */
protected $fileUsage;
public function __construct(FileUsageInterface $file_usage) {
$this->fileUsage = $file_usage;
}
public static function create(ContainerInterface $container) {
return new static($container->get('file.usage'));
}
/**
* {@inheritdoc}
*/
public function getQuestion() {
return $this->t('Are you sure you want to delete %name?', array('%name' => $this->entity->label()));
return $this->t('Are you sure you want to delete %name?', ['%name' => $this->entity->label()]);
}
/**
......@@ -55,7 +42,6 @@ class FillPdfFormDeleteForm extends ContentEntityConfirmFormBase {
/** @var FileInterface $file */
$file = File::load($fillpdf_form->get('file')->first()->target_id);
$this->fileUsage->delete($file, 'fillpdf', 'fillpdf_form', $fillpdf_form->id());
$fillpdf_form->delete();
drupal_set_message($this->t('FillPDF form deleted.'));
......
......@@ -12,7 +12,6 @@ use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Url;
use Drupal\file\Entity\File;
use Drupal\file\FileUsage\FileUsageInterface;
use Drupal\fillpdf\Component\Utility\FillPdf;
use Drupal\fillpdf\Entity\FillPdfForm;
use Drupal\fillpdf\Entity\FillPdfFormField;
......@@ -51,14 +50,13 @@ class FillPdfOverviewForm extends FillPdfAdminFormBase {
return 'fillpdf_forms_admin';
}
public function __construct(ModuleHandlerInterface $module_handler, FillPdfBackendManager $backend_manager, AccountInterface $current_user, QueryFactory $entity_query, FileSystemInterface $file_system, FileUsageInterface $file_usage) {
public function __construct(ModuleHandlerInterface $module_handler, FillPdfBackendManager $backend_manager, AccountInterface $current_user, QueryFactory $entity_query, FileSystemInterface $file_system) {
parent::__construct();
$this->backendManager = $backend_manager;
$this->moduleHandler = $module_handler;
$this->currentUser = $current_user;
$this->entityQuery = $entity_query;
$this->fileSystem = $file_system;
$this->fileUsage = $file_usage;
}
/**
......@@ -71,8 +69,7 @@ class FillPdfOverviewForm extends FillPdfAdminFormBase {
$container->get('plugin.manager.fillpdf_backend'),
$container->get('current_user'),
$container->get('entity.query'),
$container->get('file_system'),
$container->get('file.usage')
$container->get('file_system')
);
}
......@@ -197,7 +194,6 @@ class FillPdfOverviewForm extends FillPdfAdminFormBase {
// re-parsing if it fails.
$fillpdf_form->save();
$fid = $fillpdf_form->id();
$this->fileUsage->add($file, 'fillpdf', 'fillpdf_form', $fid);
$config = $this->config('fillpdf.settings');
$fillpdf_service = $config->get('backend');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment