Korzystam z Drupal 7 i stworzyłem nowy typ zawartości o nazwie „eBook” i utworzyłem nową rolę o nazwie „MonthlySubscriber”. Moim zamiarem jest zezwolenie tylko użytkownikom z „MonthlySubscriber” na przeglądanie węzłów „eBook”. Kiedy spojrzałem na ustawienia uprawnień dla roli, zobaczyłem pola wyboru, które pozwalają tworzyć, edytować i usuwać węzły tego typu treści, ale nie ma żadnych pól wyboru do przeglądania węzłów.
Jak ograniczyć użytkowników, którzy mogą przeglądać węzły „eBook”, tylko do użytkowników z rolą „MonthlySubscriber”?
Oto prosty sposób ochrony stron węzłów (węzeł / NID) przed nieuprzywilejowanymi użytkownikami.
źródło
hook_node_access
nie będzie działać z niczym, co „wyświetla” węzły, np. Widok. Możesz więc ograniczyć dostęp do widokuhook_node_access
, ale zapytanie dotyczące widoku lub niestandardowego węzła może nadal pokazywać ten węzeł użytkownikowi.hook_node_access
jest bardziej przydatny do kontroli redakcyjnej, do kontrolowania operacji tworzenia / aktualizacji / usuwaniaDostęp do zawartości nie działał w mojej instalacji Drupal 7, więc zamiast tego użyłem uprawnień do wyświetlania węzłów .
źródło
W przypadku drupal 7 wypróbuj ten: Access by Term
źródło
Rozwiązanie hook_menu_alter opublikowane powyżej przez ya.teck działa, ale powoduje konflikt ze standardowym hook_node_access w nazwie funkcji. hook_menu_alter nie jest w tym przypadku wymagany, więc odpowiedź zamieszczona przez Denisa powyżej jest moim zdaniem bardziej dokładna i właściwa. Pierwszy raz przywoływany przykład może zostać zmieniony przez inny moduł w dalszej części potoku.
źródło
Użyłem fragmentu kodu znalezionego w dokumentacji interfejsu API D7 dla haka hook_node_access .
Ten kod zapewni dostęp do przeglądania treści „ebook” użytkownikom, którzy mają uprawnienia do „przeglądania ebooka”.
Potrzebujesz nowego uprawnienia do kontrolowania dostępu poprzez wdrożenie hook_permission ().
Poprzez wdrożenie hook_node_access () Drupal może udzielić lub odmówić dostępu do węzła.
Innymi uprawnieniami (edycja, usuwanie itp.) Można zarządzać za pomocą zwykłych uprawnień Drupal.
Opcjonalnie możesz usunąć treść z przeglądu administratora, wdrażając hook_query_TAG_NAME_alter.
źródło
Perfer korzystam z modułu uprawnień do wyświetlania węzłów . To prostsze niż moduł Content Access.
Podobnie jak w D6, dodaje uprawnienia „Wyświetl dowolną zawartość” i „Wyświetl własną zawartość” do dowolnego wybranego rodzaju treści.
Kroki do naśladowania:
/admin/config/content/node-view-permissions
i wybierz typy zawartości, do których chcesz ograniczyć dostęp.Następnie przejdź do
/admin/people/permissions#module-node_view_permissions
i wybierz role, które chcesz móc wyświetlić zawartość. Zapisz uprawnienia.Gotowy!
źródło