[gelöst] Benutzer-Rolle auf einer Node abfragen?
Eingetragen von Alpenmaid (145)
am 08.04.2018 - 08:39 Uhr in
am 08.04.2018 - 08:39 Uhr in
Hi,
gibt es eine Möglichkeit, die spezifische Benutzer-Rolle auf Node-Ebene abzufragen?
Wenn ja, wäre ich dankbar für einen Code-Schnipsel :)
- Anmelden oder Registrieren um Kommentare zu schreiben
Was genau hast du vor?
am 08.04.2018 - 17:19 Uhr
vielleicht gibt es bereits ein Modul, das dies erledigt?
Grüße
Ronald
Ich habe den Inhaltstyp
am 08.04.2018 - 18:44 Uhr
Ich habe den Inhaltstyp Hunde. Für jeden Hund gibt es an die 30 Felder, die ausgefüllt werden zu genetischen Themen etc.
Diese Infos sind in Blöcke aufgeteilt, die man auch sichtbar und unsichtbar schalten kann mit einer Checkbox.
Aber ich möchte zusätzlich, dass nur die registrierten und freigeschalteten Vereinsmitglieder alle Daten sehen können (soweit über Checkbox der block freigeschaltet ist) und die einfachen angemeldeten Besucher oder Gäste nur das Minimal-Set quasi.
Ich hoffe, ich habe mich verständlich genug ausgedrückt bei all dem :D
Bisher habe ich nur "is_admin" gefunden. Das nutze ich auch für andere zwecke. Aber wichtig wäre eben die wirkliche Rolle des aktuellen Users als Variable in twig nutzen zu können.
ich wuerde dies mit views angehen
am 08.04.2018 - 23:02 Uhr
einer view kann man einen Filter mitgeben, der den Zugriffslevel beruecksichtigt.
Und den Gruppen bietet man einfach unterschiedliche Views an.
Dann gibt es zwei views. Eine mit allen Feldern, die andere mit reduzierten Informationen.
Grüße
Ronald
Aber es geht doch um die
am 09.04.2018 - 05:17 Uhr
Aber es geht doch um die Content-Node und nicht um Views.
Ich will ja nicht eine Übersicht der Hunde erstellen, sondern die Seite des Hundes selbst individuell anzeigen.
So wie es eben schon mit "is_admin" für Administratoren-Rechte geht.
ronald schrieb vielleicht
am 09.04.2018 - 07:29 Uhr
vielleicht gibt es bereits ein Modul, das dies erledigt?
gibt's wohl (noch) nicht, zumindest hab ich keines gefunden. Über den guten alten node_access hook geht's aber recht einfach. Hier ein Beispiel für einen Inhaltstypen "Tickets", den nur die Rollen Admin und Redaktion sehen dürfen:
<?php
/**
* Implements hook_node_access().
*
* Restrict node access for tickets.
*/
function MY_MODULE_node_access(\Drupal\node\NodeInterface $node, $op, \Drupal\Core\Session\AccountInterface $account) {
$type = $node->bundle(); // get node type
$roles = $account->getRoles(); // get current user's roles
if ($type == 'ticket' && $op == 'view') { // act on ticket view mode
// if user role is not redaktion or administrator, permission is denied
if (in_array('redaktion', $roles)) {
return \Drupal\Core\Access\AccessResult::neutral();
}
elseif (in_array('administrator', $roles)) {
return \Drupal\Core\Access\AccessResult::neutral();
}
else { // otherwise access from settings
return \Drupal\Core\Access\AccessResult::forbidden();
}
}
}
?>
MY_MODULE musst du gegen den Namen deines Moduls tauschen und natürlich die Rollen und den gewünschten Inhaltstypen anpassen.
ach halt, du willst quasi
am 09.04.2018 - 07:38 Uhr
ach halt, du willst quasi dass Gäste nur bestimmte Felder des Hunde- Node Types sehen, oder?
Dann kannst du das Field Permission Modul nehmen: https://www.drupal.org/project/field_permissions oder den entsprechenden hook selber verwenden:
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21...
Danke, das sind tolle Tipps!
am 09.04.2018 - 12:59 Uhr
Danke, das sind tolle Tipps! Ich werde ausprobieren, was für mich passt und ob ich es auch hinkriege :D
Es geht nicht um Gäste, sondern und eine spezielle Rolle.
Denn es soll Angemeldete Benutzer geben und Vereinsmitglieder als Rolle... neben weiteren die hier jetzt nicht relevant sind.
So ... nach ersten Test,
am 10.04.2018 - 11:28 Uhr
So ... nach ersten Test, denke ich, dass das Modul genau das ist, was meine Anforderungen rundherum erfüllt.
Also nochmals DANKE! <3