Disponibilize determinadas páginas apenas para usuários logados

9

Preciso de ajuda e aqui está o problema:

Estou construindo um site usando o Drupal 7.

Eu preciso tornar certas páginas visíveis apenas para usuários logados (cada um com seu próprio nome de usuário / senha); outros usuários devem ser simplesmente redirecionados ou receber uma mensagem de erro. Essa funcionalidade pode estar incluída no próprio Drupal 7 ou existe um módulo que faz isso (algo mais simples que os Grupos Orgânicos)?

dchello4
fonte

Respostas:

7

Você precisa usar o módulo Content Access para obter permissões de exibição de nó refinado.

Este módulo permite gerenciar permissões para tipos de conteúdo por função e autor. Ele permite que você especifique a visualização personalizada, edite e exclua permissões para cada tipo de conteúdo. Opcionalmente, você pode ativar as configurações de acesso por conteúdo, para personalizar o acesso para cada nó de conteúdo.

Anil Sagar
fonte
Esse módulo não é atualizado desde 2013 e é descrito como "ainda não considerado estável". Gostaria de recomendar um que seja mantido atualmente?
Blazemonger
1

Se você deseja fazer isso programaticamente em um módulo ou nó (com filtro de entrada PHP), você pode usar user_is_logged_in () para algo como isto:

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

Embora o módulo Content Access resolva bem o problema, é um módulo extra e ainda não é estável no D7.

Uma alternativa usando apenas módulos comumente usados ​​é:

  1. Crie os nós, mas defina-os como não publicados

  2. Crie uma visualização de nó, por exemplo, "conteúdo com restrição de função". Mostre o conteúdo do nó completo para replicar a exibição do nó padrão /%.

  3. Restrinja a visualização às funções desejadas (por exemplo, "Função | Usuário autenticado")

  4. Defina o caminho da visualização para algo como:

    restricted-content/%
  5. Defina um filtro contextual por Nid.

  6. Remova o filtro "conteúdo publicado" padrão.

Agora você terá uma exibição que funciona exatamente como o nó /%, exceto que também lida com conteúdo não publicado e restringe por função.

Tim Raasveld
fonte
11
A exibição mostraria a lista de nós, mesmo que não sejam publicados, mas os usuários sem a permissão correta ainda não poderão acessar os nós.
Kiamlaluno
-1

Existe uma solução programática bastante simples, você pode ler a função do usuário (e também se for anônima ou registrada) assim:

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

você obterá uma matriz com funções do usuário atual em $ functions.

Você pode redirecionar esse usuário dependendo da função com alguma lógica usando

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