Zugriffrechte für Custom Controller
Eingetragen von AndyLicht (260)
am 30.07.2018 - 07:41 Uhr in
am 30.07.2018 - 07:41 Uhr in
Hallo Forum,
ich habe einen Controller bei dem Funktionen wie:
<?php
$types = \Drupal::entityTypeManager()
->getStorage('node_type')
->loadMultiple();
?>
<?php
$query = \Drupal::entityQuery('node')
->condition('type', $bundle)
->condition('title', $label);
$result = $query->execute();
?>
oder
<?php
$node = \Drupal\node\Entity\Node::load($id);
$node->set('moderation_state','verified');
$node->save();
?>
verwendet werden.
Dieser Controller wird durch einen URL-Aufruf gestartet und leitet anschließend zur Startseite.
Letztendlich funktioniert das alles als Administrator, jedoch nicht als Anonymer Nutzer - wie gehe ich da am besten vor, in der routing.yml habe ich den Controller bereits mit
<?php
requirements:
_access: 'TRUE'
?>
versehen. Ich hätte jetzt jedoch gerne einen Eintrag auf der Permissions-Seite, damit ich einzelnen Nutzerrollen das Recht zur Ausführung des Controllers geben kann.
Ich habe bereits mit der premssions.yml gespielt und folgendes eingetragen:
<?php
'reportform':
title: 'can use ReportForm '
description: 'User can create a report '
restrict access: true
?>
und dann testweise in der routing.yml
<?php
requirements:
_permission: 'reportform'
?>
eingetragen, leider ohne Erfolg.
Was fehlt noch? Wonach muss ich noch schauen.
mit bestem Gruß
Andy
- Anmelden oder Registrieren um Kommentare zu schreiben
Also das Problem ist das
am 30.07.2018 - 09:44 Uhr
Also das Problem ist das meine anonymen Nutzer auf folgenden Code nicht zugreifen können ,bzw. auf deren eigentlich Inhalte nicht dürfen:
<?php
$query = \Drupal::entityQuery('node')
->condition('type', $bundle)
->condition('title', $label);
?>
Das ist eigentlich klar, weil der Node nicht auf published steht, dies kann jetzt wie folgt umgangen werden:
<?php
$query = \Drupal::entityQuery('node')
->condition('type', $bundle)
->condition('title', $label)
->accessCheck(FALSE);
?>
mfg
Andy
Das funktioniert bei mir für den Admin und den registrierten Nuter, vermutlich auch für den Gast. Jedoch habe ich in meinem Code einen Response der den Nutzer auf die Startseite weiterleitet und das macht absolute Probleme:
<?php
] RuntimeException: Failed to start the session because headers have already been sent by "C:\wamp64\www\drupal8\vendor\symfony\http-foundation\Response.php" at line 1274. in C:\wamp64\www\drupal8\vendor\symfony\http-foundation\Session\Storage\NativeSessionStorage.php on line 141 #0 C:\wamp64\www\drupal8\core\lib\Drupal\Core\Session\SessionManager.php(164): Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start()
?>
Das Problem scheinen jedoch mehrere User zu haben und scheint grundsätzlicher Natur zu sein. Sollte jemand einen einfachen Workaround haben darf er diesen gerne mitteilen.
Aller Anfang ist schwer...