PowerCMS ブログ

2017年04月13日

PowerCMSの会員サイトで会員登録・退会の機能を無効にする

PowerCMSには会員サイト構築機能があり、会員サイト上から会員登録/会員情報の閲覧・変更/退会の各手続きを行うことが出来ます。
http://www.powercms.jp/features/function/member-login.html

しかし次のように、PowerCMSで会員の会員登録・退会を管理しない場合、

  • 会員登録・退会は別システムで行う。
  • 別システムからPowerCMSへの会員情報の同期は、PowerCMSのCSVインポート機能にて行う。

意図しない会員登録・退会の処理が故意にもしくは誤って行われるのを防ぐ為、PowerCMS側の会員登録・退会の機能を無効にしたい場合があります。

今回は、このPowerCMSによる会員サイトでの会員登録・退会の機能の無効化について、実装方法を以降に解説致します。

はじめに

執筆時点のPowerCMSのバージョン(4.32)では、CMS管理画面への設定やmt-config.cgiへの環境変数記載による会員登録・退会の機能の無効化を行う事はできません。

また、会員登録の場合、会員サイト側から申請のみ行える(管理画面で承認)ように、管理画面から設定する事も出来ます。しかしこれだと、いたずら目的で申請フォームから大量の申請が送られる場合も考えられるので、ベストな方法ではありません。

以上を踏まえ、今回はMTプラグインの追加によるカスタマイズを行います。

前提

今回サンプルプラグインとして「DisableRegistration」をご用意しました。
プラグインの本体ファイルは次のリンクより取得してください。
DisableRegistration.zip

インストール方法は、他の一般的なMTプラグインのように、ZIPファイルを解凍してできたディレクトリplugins/DisableRegistration とその配下ディレクトリ・ファイルを、[CMS本体ディレクトリ]/plugins直下に設置し、アクセス権限をウェブサーバーがアクセス可能となるよう設定してください。

※本プラグインは、PSGI環境およびFastCGI環境での動作は未検証となります。

また、本プラグインは、次の環境にて動作確認を行っています。

  • Movable Type 6.3.3 + PowerCMS 4.32
  • ウェブサイト・ブログのテーマは「PowerCMS Eiger」を使用

PowerCMS4以降の異なるバージョン、および他のPowerCMS標準テーマでも動作すると思われます。

DisableRegistrationプラグインの仕組み

まず前提として、会員サイト上からの会員登録および退会に係る画面を表示する際には、必ずmt-members.cgiにクエリを付加したURLがリクエストされます。

また、mt-members.cgiがどの動作を行うかは、クエリ「__mode」の値により指定されています。

この「__mode」に指定される値の内、会員登録に係る値は、次の通りです。

  • signup
  • do_signup

また、退会に係る値は次の通りとなります。

  • secedes
  • secedes_confirm

本プラグインではこの点に注目し、クエリ __mode に 上述の何れかの値が指定した場合に、__modeの値を「dummy」書き換えて、プラグインが用意したサブルーチン「dummy」に処理が流れるようにする事で、会員登録・退会の処理を無効化しています。

DisableRegistrationプラグインの検証

実装を適用したら、会員サイト上より会員登録・退会の手順を行い、例外処理が動く事を確認します。

会員登録時の動作検証

次を確認します。

  • 会員サイトのログイン画面下部のリンク「サインアップ」をクリックし、会員登録フォームに遷移しない事。

会員サイトのログイン画面下部のリンク「サインアップ」

実装が正しい場合、「サインアップ」をクリックしても、会員サイトのログイン画面が再び表示されます。

退会時の動作検証

次を確認します。

  • プロフィールの編集画面下部のリンク「退会する」をクリックして、「退会の確認」画面に遷移しない事。

プロフィールの編集画面下部のリンク「退会する」

実装が正しく動く場合、CMSエラーの画面が表示されます。

リンク「退会する」をクリックした際の例外表示

カテゴリー
PowerCMS 4
技術情報

ページの先頭へ