Mam użytkownika z uprawnieniami do przeglądania i edycji określonego typu treści. Daje to wszystkim użytkownikom uprawnienia do przeglądania i edycji wszystkich węzłów tego typu. Ale tak naprawdę chcę utworzyć dla każdego użytkownika unikalny węzeł, aby tylko ten użytkownik mógł go wyświetlać i edytować. Jak mogę to zrobić w Drupal 7?
10
Odpowiedzi:
Korzystając z istniejącego modułu, możesz to zrobić za pomocą Content Access , który (w połączeniu z ACL ) pozwala ustawić uprawnienia dostępu do węzła dla każdego użytkownika.
Oznacza to, że musisz ręcznie ustawić uprawnienia dostępu dla każdego węzła.
Jeśli ręcznie utworzysz węzły, a następnie chcesz mieć pewność, że tylko użytkownik ustawiony jako właściciel węzła będzie mógł go wyświetlać (i edytować), możesz utworzyć moduł niestandardowy (co oznacza, że moduł jest używane w Twojej witrynie) i zaimplementuj
hook_node_access()
w następujący sposób (kod został napisany, aby ułatwić czytanie):Korzystając z tej implementacji przechwytywania, nie trzeba ręcznie edytować uprawnień dostępu przyznanych dla każdego węzła tworzonego typu treści. Zmiana właściciela węzła również byłaby łatwiejsza, ponieważ nie trzeba zmieniać uprawnień dostępu do tego węzła; kod automatycznie przyzna uprawnienia do aktualizacji i przeglądania użytkownikowi ustawionemu jako właściciel (lub autor) węzła.
źródło
Nie potrzebujesz do tego żadnego specjalnego modułu ani kodu niestandardowego. Po prostu utwórz ręcznie te węzły, ustaw odpowiednich użytkowników jako właścicieli (autorów) węzłów i ustaw uprawnienia do tego typu treści, aby edytować tylko własną zawartość (nie edytuj żadnej treści tego typu) i gotowe.
źródło
Mówisz o kontroli dostępu do węzła Drupal, co jest ogromnym tematem.
Wbudowana obsługa rdzenia dla kontroli dostępu do węzła jest raczej rzeczą oczywistą. Aby kontrolować dostęp do widoku węzła według roli, musisz użyć jakiegoś modułu kontroli dostępu do węzła. Na stronie Drupal.org znajduje się strona z listą wszystkich modułów dostępu do węzłów , z recenzją każdego z nich. Proponuję rzucić okiem na tę stronę, aby sprawdzić, czy możesz znaleźć odpowiedni moduł do kontroli dostępu.
Moduł Flexi Access wydaje się być modułem najbardziej zbliżonym do twoich wymagań, ponieważ jego podstawową funkcją jest umożliwienie kontroli dostępu dla poszczególnych użytkowników, a nie według roli lub terminu systematyki.
Jest to mały moduł, który umożliwia konfigurowanie list ACL (list kontroli dostępu) dla poszczególnych użytkowników. Jest to w zasadzie interfejs użytkownika dla modułu ACL , więc musisz go również zainstalować.
Brakuje niektórych funkcji bardziej zaawansowanych modułów kontroli dostępu, takich jak Content Access , ale jest aktywnie utrzymywany i obecnie nie ma żadnych otwartych błędów w kolejce problemów.
Ujawnienie: Jestem opiekunem Flexi Access.
źródło