ログインしたユーザーのみが特定のページを利用できるようにする


9

私はいくつかの助けが必要です、そしてここに問題があります:

Drupal 7を使用してサイトを構築しています。

特定のページをログインしているユーザーのみに表示する必要があります(それぞれに独自のユーザー名/パスワードがあります)。他のユーザーは単にリダイレクトされるか、エラーメッセージが表示されます。この機能はDrupal 7自体に含まれているのでしょうか、それともこれを行うモジュール(Organic Groupsよりも簡単なもの)はありますか?

回答:


7

きめ細かいノードビュー権限を取得するには、コンテンツアクセスモジュールを使用する必要があります。

このモジュールを使用すると、ロールおよび作成者ごとにコンテンツタイプの権限を管理できます。これにより、各コンテンツタイプのカスタム表示、編集、および削除権限を指定できます。オプションで、コンテンツごとのアクセス設定を有効にして、各コンテンツノードのアクセスをカスタマイズできます。


そのモジュールは2013年以降更新されておらず、「まだ安定しているとは見なされていません」と説明されています。現在維持されているものをお勧めしますか?
Blazemonger 2015年

1

モジュールまたはノード(PHP入力フィルター付き)内でプログラムで実行する場合は、次のようにuser_is_logged_in()を使用できます。

<?php
if (!user_is_logged_in()) drupal_not_found();
?>

0

コンテンツアクセスモジュールは問題をうまく解決しますが、それは追加のモジュールであり、D7ではまだ安定していません。

一般的に使用されるモジュールのみを使用する別の方法は次のとおりです。

  1. ノードを作成しますが、非公開に設定します

  2. 「ロール制限コンテンツ」などのノードビューを作成します。標準ノード/%表示を複製するために、ノードのコンテンツ全体を表示します。

  3. ビューを目的の役割に制限します(例:「役割|認証済みユーザー」)

  4. ビューのパスを次のように設定します。

    restricted-content/%
  5. Nidによってコンテキストフィルターを設定します。

  6. デフォルトの「コンテンツは公開されています」フィルターを削除します。

これで、非公開コンテンツを処理し、役割によって制限することを除いて、node /%と同じように機能するビューができます。


1
非公開であってもノードのリストがビューに表示されますが、適切な権限のないユーザーはノードにアクセスできません。
kiamlaluno

-1

かなり単純なプログラムによる解決策があり、次のようにユーザーの役割(および匿名または登録されている場合)を読み取ることができます。

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

$ rolesに現在のユーザーのロールの配列が表示されます。

いくつかのロジックを使用して、役割に応じてそのユーザーをリダイレクトできます

drupal_goto ('url-of-the/page');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.