任意のタイミングでパスワード再確認を入れる処理について

Events happening in the community are now at Drupal community events on www.drupal.org.
tami10's picture

はじめまして、drupal6を使用してサイトを構築しています。

現在、アカウント情報は本人(と管理者)のみが確認と編集をできるようにしています。
アカウント情報を見る際に、パスワードの再確認をつけたいと思っています。
(yahoo!の登録情報を見るときのようなイメージです)

Rulesを使用して、ページリダイレクトをさせて、独自に作ったページでパスワード再確認を
させることも考えたのですが、Rulesの条件が複雑(編集ページをURL直接入力で表示された場合)なのと
パスワード再確認の処理の作り込みがセキュリティーの面で不安です。

モジュールが提供されていないかと思い探してみましたが、見つかりませんでした。

良い実現方法をご存知の方いらっしゃいましたら教えていただけるとありがたいです。
よろしくお願いいたします。

Comments

dokumori's picture

たしかに、ありそうで無い機能ですね。proof-of-concept を作ってみました。

http://drupal.org/sandbox/dokumori/1267260

以下のコマンドで取得できます。
git clone --branch master http://git.drupal.org/sandbox/dokumori/1267260.git

外部の認証サービス(OpenID, LDAP, OAuth)や、 node profile モジュールを用いたプロフィールの保護には対応していません。

tami10's picture

返信ありがとうございます。

モジュールまで作っていただき、とても参考になります。

今回、私の実現させたいことは
1.アカウント情報を表示させる際にパスワード認証を行う
2.プロフィールを表示させる際にパスワード認証を行う

です。

1については、作っていただいたモジュールを参考に考えてみます。
2のプロフィールは、当方の環境でcontent profileモジュールを使用しているため難しいかもしれませんが、頑張ってみます。

また、将来的には指定した任意のノードの表示の際にも認証を行いたいと考えています。

hookなど、まだDrupalに関しての知識が乏しいため再びお教え願うことがあると思いますが、よろしくお願いします!

dokumori's picture

「アカウント情報を表示」/「プロフィールを表示」というのは、ユーザーが自分自身のアカウント情報/プロフィールを表示、ということでしょうか?表示というのは、見るだけの表示でしょうか?それとも、エディット画面の表示でしょうか?

ユーザーアカウントでは、見るだけの場合は $op == 'view'、 エディット画面は $op == 'form' です。上のモジュールには両方のケースがあるので、そのまま使えます。

content profile モジュールのプロフィールの場合、まず管理画面を作り、そこで表示をコントロールしたいコンテンツタイプを選択し、hook_nodeapi()の実装内、$op == 'view' (見るだけの場合)でそのコンテンツタイプを表示するときのみ $node->uid == $user->uid のチェックを入れ、認証画面を表示する方法でいけると思います。

指定したノードの表示の際の認証も、基本的に上記と同じ方法で可能です。

頑張ってくださいね :)

tami10's picture

再度の返信ありがとうございます。

説明が足りず申し訳ありません。ユーザーが自分自身のアカウント情報/プロフィールを表示、ということです。
見るだけの画面を表示する前にパスワード認証を行います。
また、パスワード認証を通らずに編集画面を表示された場合(urlを直接指定したなど)にもパスワード認証を行いたいです。
一度パスワード認証を通った場合はブラウザを閉じるまで認証は行いません。

dokumori様のアドバイスを元に、アカウント情報を見るだけの画面表示にもパスワード認証を入れることができました。
コンテンツタイプを管理画面ではなくコードの中で直接指定していますが、content profileで作ったプロフィールにもパスワード認証を入れれました(こちらの編集画面は$op == 'prepare'で行いました)。

ブラウザを開きなおした際に再認証を行いたいため、Cookieを使用し、情報を保持させるようにしました。
一度認証させると、ユーザーごとに独自の値を生成し、ブラウザを閉じた際に破棄されます。

アカウント情報、プロフィールを見るときにパスワード再確認をするという、やりたかったことが実現できました。
丁寧に教えてくださり本当にありがとうございます!

dokumori's picture

ご丁寧に報告ありがとうございました。必要なものが作れたようで何よりです。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: