Puncte:0

Valorile returnate de la hook_node_access_records() nu sunt considerate a permite accesul

drapel cn

Implementez o soluție în Drupal 9 în care utilizatorii au voie să vadă doar nodurile care aparțin aceluiași grup. Dacă un nod nu aparține niciunui grup, ar trebui să îl poată vedea. am folosit hook_node_grants() să atribuie dreptul de acordare utilizatorului curent și hook_node_access_records() pentru a seta acordarea vizualizării per nod, așa cum este sugerat în Cum filtrez o vizualizare după rezultatele hook_node_access?

Când vizitează un nod pe care un utilizator nu trebuie să-l vadă, utilizatorul primește o eroare 403, ca rezultat așteptat. Pe o vedere, nodul este vizibil, totuși.

Ca soluție, aș putea implementa hook_views_query_alter() și adaug o condiție de acces, dar prefer o soluție mai generică.

Acesta este codul pe care îl folosesc.

 funcția mymodule_node_access_records(NodeInterface $nod) {
  if ($nod->hasField('field_group') && !empty($term = $node->field_group->getValue())) {
    $term = resetare($term);
    $grants[] = [
      'realm' => 'mymodule_realm',
      'gid' => $term['target_id'],
      'grant_view' => 1,
      'grant_update' => 0,
      'grant_delete' => 0,
      'prioritate' => 0,
    ];

    returnează $granturi;
  }
}

 function mymodule_node_grants(AccountInterface $cont) {
  $granturi = [];
  dacă ($grup = checkGroupHelper($cont)) {
    $grants['mymodule_realm'] = $grup;
  }
  returnează $granturi;
}
Puncte:0
drapel cn

Am reușit să lucrez prin adăugarea etichetei de interogare acces_nod sub setările de interogare din vizualizarea mea. A început să filtreze rezultatele pe baza tabelului node_access. N-am văzut-o niciodată ca o cerință, așa că este puțin ciudat, dar sper că îi poate ajuta pe alții care se întreabă ca mine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.