会員限定Webサイトの作成(Membersプラグイン)

Membersプラグインはウェブサイトへのログイン機能を提供します。会員登録、会員情報の変更、パスワードリセット、二段階認証などをサポートしており、会員属性によるコンテンツのパーソナライズにも対応可能です。

会員専用サイト

用語の定義

  • メンバー = 会員、memberモデルのオブジェクトのこと。PowerCMS Xの管理画面ユーザーとは別のモデルとなります。
  • サインアップ = ユーザー登録のこと。
  • アプリケーション = メンバーが登録・退会・プロフィール編集・パスワードリセットなどを行うPHP製のWebアプリケーションのこと。

設置とインストール

  • pluginsディレクトリに Membersディレクトリを設置します。
  • システムのプラグインの管理画面で、Membersにチェックを入れて有効化します。
  • スキーマ管理画面から「member」モデルを選択してアップグレードします。

プラグイン設定

  • アプリのURL : アプリケーションのURLを指定します。
  • ログインを許可 : そのスコープでのログインを許可する場合にチェックします(デフォルト有効)。
  • サインアップを許可 : そのスコープでのサインアップを許可する場合にチェックします(デフォルト有効)。
  • 2段階認証 : 2段階認証を有効にする場合にチェックします(デフォルト無効)。この指定のある時、ログイン時に確認コードをメール送信し、そのコードを使ってログインするようになります。
  • 編集不可カラム : 対象のカラムをカンマ区切りで入力します。指定のカラムはサインアップ/プロフィール編集画面には非表示となり、メンバーは変更できません。memberモデルにカラムを追加した場合、ここに指定のないカラムはサインアップ/プロフィール編集画面に表示され、メンバーが登録・変更を行うことができます。
  • メールのFrom : メールのFromアドレスを指定します。省略した場合、システムのメールアドレスが使われます。
  • サインアップ通知先メールアドレス : メンバー登録されたことを通知するメールアドレスを指定します。
  • 退会通知先メールアドレス : メンバーが登録解除したことを通知するメールアドレスを指定します。
  • ログインセッション有効期限 : ログインセッションの有効期限(秒)を指定します。
  • サインアップのタイムアウト : サインアップ確認画面を表示してから、登録までの有効期限(秒)を指定します。
  • 退会処理のタイムアウト : 退会の確認画面を表示してから、退会までの有効期限(秒)を指定します。
  • サインアップのセッション有効期限 : サインアップ完了後、確認メールのURLをクリックするまでの有効期限(秒)を指定します。
  • サインアップ時のメンバーのステータス : 「無効」を指定した場合、管理者によって有効化されるまでログインできません(管理者は管理画面からメンバーを有効化でき、その際にメンバーに通知を送信することができます)。
  • メンバーのデータを正規化する : 全角英数字を半角に揃える、機種依存文字を正規化するなどの処理をサーバー側で行います。

Membersプラグイン設定画面

アプリケーション

http://example.com/powercmsx/plugins/Members/app/pt-members.php

必要に応じて別の場所に移動してください。

アプリケーションメソッド

各リクエストには workspace_id(スコープ)を指定することができます。

pt-members.php?__mode=sign_up

サインアップ(アカウントの作成)画面を表示し、サインアップを受け付けます。

pt-members.php?__mode=recover_password

メールアドレスを入力して、パスワード再設定画面のURLをメール送信します。

pt-members.php?__mode=login

ログイン画面を表示します。

pt-members.php?__mode=logout

ログアウトします。

pt-members.php?__mode=unsubscribe

ログイン済みの時、退会処理を行います。退会するとメンバーには「削除フラグ」が指定され、無効化されます。パラメタ「_type=confirm」を追加すると、退会確認画面を表示します。「_type=unsubscribe&magic_token=一時トークン」指定があり、かつリクエストメソッドがPOSTの時、退会処理が実行されます。

pt-members.php?__mode=edit_profile

ログイン済みの時、プロフィール情報の編集を行います。

アプリケーションメソッドに対応するビュー(テンプレート)

対象のスコープに該当するベースネームと一致するビュー(クラスが「メンバー」指定のビュー)がある時、それが使われます。ない場合は、plugins/Members/tmpl配下のテンプレートが利用されます。

  • member_login.tmpl : ログイン・ログアウト画面用
  • member_sign_up.tmpl : サインアップ画面用
  • member_do_signup.tmpl : サインアップ後のメールのURLをクリックしてサインアップを完了した時の画面用
  • member_edit_profile.tmpl : プロフィールの編集画面用
  • member_unsubscribe.tmpl : 退会画面用
  • member_start_recover.tmpl : パスワード再設定用

※ 2段階認証のメールテンプレートは、アプリケーションディレクトリ配下 tmpl/email/confirmation_code.tmpl が使われます。

メールビュー(テンプレート)

対象のスコープに該当するベースネームと一致するビュー(クラスが「メール」指定のビュー)がある時、それが使われます。ない場合は、plugins/Members/tmpl/email配下のテンプレートが利用されます。ビューがある時、メールの件名はビューの「件名」となります(MTタグが利用できます)。

  • members_sign_up_confirm.tmpl : サインアップ後にメンバーに本登録用のURLを送信するメール用です。
  • members_sign_up_notification.tmpl : メンバーがサインアップ後、本登録を完了した時、管理者に通知を送信するメール用です。
  • members_activate_notification.tmpl : 管理画面でメンバーの編集画面の「有効化されたことをメンバーに通知する」にチェックを入れて保存した時に、メンバーに通知を送信するメール用です。

テンプレート・タグ

アーカイブの設定が「ダイナミック」の時のみ動作します。

条件タグ

mt:iflogin

ログインしているかどうかを判別し、ログイン済みの時にブロック内を出力します。タグ属性「setcontext」を指定すると、メンバーのコンテキストをセットします。

mt:ifmembersappurl

プラグイン設定で、アプリのURLに正しい値が保存されているときに値を出力します。タグ属性 workspace_idでスコープを指定できます。

ブロックタグ

mt:membercontext

メンバーのコンテキストをセットします。mt:ifloginにsetcontextタグ属性を指定する場合との違いは、ブロックタグではブロックを抜けるとコンテキストが初期化される点です。条件タグ内でセットしたコンテキストは、タグの外でもリセットされずにセットされたままとなります。

ファンクションタグ

mt:membersappurl

プラグイン設定のアプリのURLの値を出力します。タグ属性 workspace_idでスコープを指定できます。

テンプレートの例(URLマッピングで、「ダイナミック」を指定してください)

<mt:iflogin>
  <mt:membercontext>
    <mt:membernickname escape> さん、ようこそ
  </mt:membercontext>
<mt:else>
  <a href="<mt:membersappurl>?__mode=login&amp;workspace_id=0">ログインしてください。</a>
  または、
  <a href="<mt:membersappurl>?__mode=sign_up&amp;workspace_id=0">アカウントの作成</a>
</mt:iflogin>