Stellen Sie bestimmte Seiten nur angemeldeten Benutzern zur Verfügung

9

Ich brauche etwas Hilfe und hier ist das Problem:

Ich baue eine Site mit Drupal 7.

Ich muss bestimmte Seiten nur für angemeldete Benutzer sichtbar machen (jeder hat seinen eigenen Benutzernamen / sein eigenes Passwort). Andere Benutzer sollten einfach umgeleitet werden oder eine Fehlermeldung erhalten. Ist diese Funktionalität möglicherweise in Drupal 7 selbst enthalten oder gibt es ein Modul, das dies tut (etwas einfacher als organische Gruppen)?

dchello4
quelle

Antworten:

7

Sie müssen das Content Access- Modul für fein abgestimmte Berechtigungen für die Knotenansicht verwenden.

Mit diesem Modul können Sie Berechtigungen für Inhaltstypen nach Rolle und Autor verwalten. Hier können Sie benutzerdefinierte Ansichts-, Bearbeitungs- und Löschberechtigungen für jeden Inhaltstyp festlegen. Optional können Sie die Einstellungen für den Inhaltszugriff aktivieren, sodass Sie den Zugriff für jeden Inhaltsknoten anpassen können.

Anil Sagar
quelle
Dieses Modul wurde seit 2013 nicht mehr aktualisiert und wird als "noch nicht stabil" beschrieben. Möchten Sie eine empfehlen, die derzeit gewartet wird?
Blazemonger
1

Wenn Sie dies programmgesteuert innerhalb eines Moduls oder Knotens (mit PHP-Eingabefilter) tun möchten , können Sie user_is_logged_in () für Folgendes verwenden :

<?php
if (!user_is_logged_in()) drupal_not_found();
?>
Sean3z
quelle
0

Obwohl das Content Access-Modul das Problem gut löst, ist es ein zusätzliches Modul und auf D7 noch nicht stabil.

Eine Alternative, bei der nur häufig verwendete Module verwendet werden, ist:

  1. Erstellen Sie die Knoten, setzen Sie sie jedoch als unveröffentlicht

  2. Erstellen Sie eine Knotenansicht, z. B. "rollenbeschränkter Inhalt". Zeigen Sie den vollständigen Inhalt des Knotens an, um die Standardanzeige für Knoten /% zu replizieren.

  3. Beschränken Sie die Ansicht auf Ihre gewünschten Rollen (z. B. "Rolle | Authentifizierter Benutzer").

  4. Stellen Sie den Ansichtspfad auf Folgendes ein:

    restricted-content/%
  5. Legen Sie einen Kontextfilter nach Nid fest.

  6. Entfernen Sie den Standardfilter "Inhalt wird veröffentlicht".

Jetzt haben Sie eine Ansicht, die genau wie node /% funktioniert, außer dass sie auch unveröffentlichte Inhalte verarbeitet und nach Rollen einschränkt.

Tim Raasveld
quelle
1
In der Ansicht wird die Liste der Knoten angezeigt, auch wenn sie nicht veröffentlicht wurden. Die Benutzer ohne die richtige Berechtigung können jedoch weiterhin nicht auf die Knoten zugreifen.
Kiamlaluno
-1

Es gibt eine ziemlich einfache programmatische Lösung. Sie können die Benutzerrolle (und auch wenn sie anonym oder registriert ist) folgendermaßen lesen:

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

Sie erhalten ein Array mit den Rollen des aktuellen Benutzers in $ Rollen.

Sie können diesen Benutzer je nach Rolle mit einer bestimmten Logik umleiten

drupal_goto ('url-of-the/page');
NenadP
quelle