Udostępnij określone strony tylko zalogowanym użytkownikom

9

Potrzebuję pomocy, a oto problem:

Buduję witrynę za pomocą Drupala 7.

Chcę, aby niektóre strony były widoczne tylko dla zalogowanych użytkowników (każdy ma swoją nazwę użytkownika / hasło), inni użytkownicy powinni zostać po prostu przekierowani lub wyświetlić komunikat o błędzie. Czy ta funkcjonalność może być zawarta w samym Drupal 7, czy jest moduł, który to robi (coś prostszego niż Grupy organiczne)?

dchello4
źródło

Odpowiedzi:

7

Musisz użyć modułu Content Access, aby uzyskać szczegółowe uprawnienia do wyświetlania węzłów.

Ten moduł umożliwia zarządzanie uprawnieniami do typów treści według roli i autora. Pozwala określić niestandardowe uprawnienia do wyświetlania, edycji i usuwania dla każdego typu zawartości. Opcjonalnie możesz włączyć ustawienia dostępu do treści, aby dostosować dostęp do każdego węzła treści.

Anil Sagar
źródło
Ten moduł nie był aktualizowany od 2013 roku i jest opisany jako „jeszcze nie uważany za stabilny”. Chcesz polecić taki, który jest obecnie utrzymywany?
Blazemonger,
1

Jeśli chcesz to zrobić programowo w module lub węźle (w / PHP Input Filter), możesz użyć user_is_logged_in () do czegoś takiego:

<?php
if (!user_is_logged_in()) drupal_not_found();
?>
Sean3z
źródło
0

Chociaż moduł Content Access dobrze rozwiązuje problem, jest to dodatkowy moduł i nie jest jeszcze stabilny na D7.

Alternatywą jest stosowanie tylko najczęściej używanych modułów:

  1. Utwórz węzły, ale ustaw je jako niepublikowane

  2. Utwórz widok węzła, np. „Treść z ograniczoną rolą”. Pokaż pełną zawartość węzła, aby zreplikować wyświetlanie standardowe węzła /%.

  3. Ogranicz widok do żądanych ról (np. „Rola | Uwierzytelniony użytkownik”)

  4. Ustaw ścieżkę widoku na coś takiego:

    restricted-content/%
  5. Ustaw filtr kontekstowy według Nid.

  6. Usuń domyślny filtr „treść jest opublikowana”.

Teraz będziesz mieć widok, który działa podobnie do węzła /%, z tym że obsługuje także niepublikowane treści i ogranicza według roli.

Tim Raasveld
źródło
1
Widok pokazuje listę węzłów, nawet jeśli nie są one publikowane, ale użytkownicy bez odpowiednich uprawnień nadal nie mogą uzyskać dostępu do węzłów.
kiamlaluno
-1

Istnieje dość proste rozwiązanie programowe, możesz odczytać rolę użytkownika (a także jeśli jest ona anonimowa lub zarejestrowana) w następujący sposób:

$roles=$GLOBALS['user']->roles;

dostaniesz tablicę z rolami bieżącego użytkownika w $ rolach.

Możesz przekierować tego użytkownika w zależności od roli za pomocą logiki

drupal_goto ('url-of-the/page');
NenadP
źródło