Korzystam z modułu Widoki, aby utworzyć widok, do którego dostęp powinni mieć tylko konkretni użytkownicy. Wiem, że Widoki obejmują kontrolę dostępu według roli lub uprawnień, ale potrzebuję czegoś bardziej szczegółowego: Zasadniczo chcę móc powiedzieć, że tylko użytkownik „x”, a użytkownik „y” może uzyskać dostęp do określonego widoku (lub ktoś z rola administratora witryny). Tak więc działałoby to bardzo podobnie do działania modułu ACL dla poszczególnych węzłów.
Czy najlepszym rozwiązaniem jest utworzenie wtyczki niestandardowego dostępu do widoku? Nie mam z tym dużego doświadczenia.
Zastanawiam się także nad użyciem argumentu z pewną walidacją, aby to osiągnąć (aby nie musiałem tworzyć dziesiątek osobnych widoków). Na przykład, ponieważ ten widok będzie zakładką na określonej ścieżce węzła, zastanawiam się nad skonfigurowaniem pola referencyjnego użytkownika w tym węźle, które określa, kto może zobaczyć widok. Potrzebuję tylko sposobu, aby widok sprawdził, czy bieżący użytkownik jest równy użytkownikowi podanemu w polu referencyjnym użytkownika.
Jakieś pomysły? Czy też czynię to bardziej skomplikowanym, niż to konieczne?
Dzięki, Ben
Odpowiedzi:
Zamiast ograniczać uprawnienia do widoku, możesz ograniczyć uprawnienia do elementu menu, który prowadzi do tego widoku (może to być karta w węźle lub wywołanie zwrotne menu). Możesz utworzyć widok tylko z ekranem „Domyślne” i bez wyświetlania strony (więc użytkownicy nie mogą po prostu ustalić ścieżki do niego). Następnie w
page callback
pozycji menu po prostu zadzwoń,views_embed_view
aby wyświetlić widok. Wygląda na to, że obsługa uprawnień do elementu menu może być łatwiejsza niż pisanie nowej wtyczki do Widoku (chociaż wtyczka może być pomocna dla innych).źródło
Wypróbuj moduł Oddzwoń dostęp do widoku .
źródło
Pewnie czegoś mi brakuje, ale wygląda na to, że utworzyłbyś nową rolę i dodałbyś tych Użytkowników. Następnie użyj funkcji Widoki: Dostęp: rola.
Jeśli musisz powiązać prawa dostępu do czegoś w treści, skorzystałbym z niestandardowego dostępu do Widoku, co przy pierwszym uruchomieniu sprawiło mi ból, ale doceniam elastyczność, która działa. Jeśli widok generuje pozycję menu, nie pojawi się, jeśli widok nie przejdzie funkcji dostępu.
Jeśli ukrywasz tylko element menu, wydaje mi się, że widok nadal będzie działał, a użytkownik może dostosować identyfikator URI, aby wyświetlić dane.
Nocnik
źródło
Co powiesz na użycie modułu Niestandardowe uprawnienia do utworzenia nowych uprawnień specjalnie na swój cel, a następnie użycie modułu Uprawnienia użytkownika do przypisania tych nowych uprawnień poszczególnym użytkownikom?
Moduł uprawnień niestandardowych jest bardzo lekki. Nie jestem jednak pewien modułu uprawnień użytkownika, ponieważ zasadniczo tworzy on nową rolę dla każdego użytkownika za kulisami (role te nie są widoczne na głównej stronie uprawnień). Jeśli masz wielu użytkowników, może to nieco zwiększyć rozmiar twoich ról i tabel user_roles.
źródło
Racja, to ma sens. Myślę, że możesz (być może nie w 100% pewien) użyć widoku i argumentu. Ustaw argument jako identyfikator użytkownika pobrany od aktualnie zalogowanego użytkownika i spraw, aby domyślny argument nie wyświetlał niczego. To powinno być w stanie to zrobić, chociaż nie wiem, jak bezpieczne byłoby być uczciwym. Jeśli spróbujesz, odeślij wiadomość i daj mi znać o swoich postępach.
źródło
Jeśli chcesz łączyć różne wtyczki dostępu w Widoku, możesz rzucić okiem na moduł Dostęp do wielu widoków .
źródło