PowerCMSの会員サイトで会員登録・退会の機能を無効にする前の記事アーカイブ(全エントリー一覧)次の記事2017年04月13日PowerCMSの会員サイトで会員登録・退会の機能を無効にするツイートPowerCMSには会員サイト構築機能があり、会員サイト上から会員登録/会員情報の閲覧・変更/退会の各手続きを行うことが出来ます。別システムからPowerCMSへの会員情報の同期は、PowerCMSのCSVインポート機能にて行う。意図しない会員登録・退会の処理が故意にもしくは誤って行われるのを防ぐ為、PowerCMS側の会員登録・退会の機能を無効にしたい場合があります。今回は、このPowerCMSによる会員サイトでの会員登録・退会の機能の無効化について、実装方法を以降に解説致します。はじめに執筆時点のPowerCMSのバージョン(4.32)では、CMS管理画面への設定やmt-config.cgiへの環境変数記載による会員登録・退会の機能の無効化を行う事はできません。会員登録の場合、会員サイト側から申請のみ行える(管理画面で承認)ように、管理画面から設定する事も出来ます。これだと、いたずら目的で申請フォームから大量の申請が送られる場合も考えられるので、ベストな方法ではありません。以上を踏まえ、今回はMTプラグインの追加によるカスタマイズを行います。今回サンプルプラグインとして「DisableRegistration」をご用意しました。プラグインの本体ファイルは次のリンクより取得してください。その配下ディレクトリ・ファイルを、[CMS本体ディレクトリ]/plugins直下に設置し、アクセス権限をウェブサーバーがアクセス可能となるよう設定してください。※本プラグインは、PSGI環境およびFastCGI環境での動作は未検証となります。本プラグインは、次の環境にて動作確認を行っています。Eiger」を使用PowerCMS4以降の異なるバージョン、および他のPowerCMS標準テーマでも動作すると思われます。DisableRegistrationプラグインの仕組みまず前提として、会員サイト上からの会員登録および退会に係る画面を表示する際には、必ずmt-members.cgiにクエリを付加したURLがリクエストされます。mt-members.cgiがどの動作を行うかは、クエリ「__mode」の値により指定されています。この「__mode」に指定される値の内、会員登録に係る値は、次の通りです。signupdo_signupまた、退会に係る値は次の通りとなります。上述の何れかの値が指定した場合に、__modeの値を「dummy」書き換えて、プラグインが用意したサブルーチン「dummy」に処理が流れるようにする事で、会員登録・退会の処理を無効化しています。実装を適用したら、会員サイト上より会員登録・退会の手順を行い、例外処理が動く事を確認します。会員サイトのログイン画面下部のリンク「サインアップ」をクリックし、会員登録フォームに遷移しない事。実装が正しい場合、「サインアップ」をクリックしても、会員サイトのログイン画面が再び表示されます。プロフィールの編集画面下部のリンク「退会する」をクリックして、「退会の確認」画面に遷移しない事。実装が正しく動く場合、CMSエラーの画面が表示されます。