concrete5のユーザー登録時に、ユーザーをグループ分けする処理

この記事はconcrete5 Japan Advent Calendar 2017の5日目です。

concrete5のユーザー登録

まずはconcrete5のユーザー登録についての確認です。concrete5 では、ユーザー登録方法がいくつかあります。管理画面で、システムと設定、ログインとユーザー登録、ユーザー登録の公開、と進むと、下のようなページが表示されます。

user-register.png

ユーザー登録は、以下のパターンあります。(バージョン8.2.1の場合)

  1. 管理者がアカウントを作成する
  2. 登録希望者が自分で登録できる
    1. すぐにアカウントが有効になる
    2. メール確認後、アカウントが有効になる

今回は、『登録希望者が自分で登録できる』の場合に、ユーザーをグループ振り分けする処理です。

実際の活用例

弊社運営の見積書作成サービスマイ見積では、

紹介コードを記入したら1割引で利用できる

という仕組みを用意しています。この仕組みを実装するために、ユーザーをグループ振り分けを使っています。

  1. ユーザー登録してもらう
  2. 登録時に、特定のキーワードが記入されていれば、『紹介ありグループ』に入れる
  3. 『紹介ありグループ』のユーザーには、割引登録フォームを表示する

という形です。割引登録フォームを表示する部分は、concrete5の権限機能で標準対応しているので、必要なのは2の処理だけです。

class Controller extends \Concrete\Core\Package\Package {
    protected $groupid_ref = 8;
    protected $refname = array('キーワード1', 'キーワード2', 'キーワード3');
    ... (省略) ...
    public function on_start() {
        Events::addListener('on_user_validate',array($this, 'validateUser'));
    }
    public function validateUser($ue) {
        $ui = $ue->getUserInfoObject();
        $uID = $ui->getUserID();
        $group_with_referral = Group::getByID($this->groupid_ref);
        $refname = $ui->getAttribute('ref');
        $u = User::getByUserID($uID);
        if (in_array($refname,$this->refname) && !$u->inGroup($group_with_referral)) {
            $u->enterGroup($group_with_referral);
        } 
    }
}

  1. ユーザー登録時に入力してもらった属性値を、$refname = $ui->getAttribute('ref'); で取得する
  2. 取得した値が、指定したキーワードに合致すれば、特定のグループに入れる

という処理を行っています。グループIDやキーワードは、変更することは少ないという判断で、(管理画面ではなく)PHPファイルで指定する方式にしています。

パッケージのコントローラーに、上述のようにon_start, validateUserを記述すれば、ユーザーの登録時(アカウントが有効になったとき)に、グループに追加する処理が実行されます。

特定のグループにのみブロックを表示させる

この機能は、concrete5のデフォルトで用意されています。(上級権限にする必要があります。)

編集モードでブロックを選択すると、権限、という項目があるので、そこで設定します。

group.png

ブロックを表示、のところが、たいていのブロックはゲストになっているのですが、ゲストを外します。そして、特定のグループを追加します。そうすると、そのグループに属するユーザーにのみ、そのブロックが表示されます。

紹介割引でマイ見積に登録したい方は

2017年1月以降に、弊社社員と名刺交換された方は、裏面をごらんいただくと、紹介コードが記載されています。また、コワーキングスペースなどで、スペース利用者向けに紹介コードを用意いたしておりますので、ご利用くださいませ。

記事公開日: 2017年12月05日
#

弊社で無償公開しているconcrete5アドオンRescuework's ... 詳細はこちら

concrete5では、ユーザーに属性を設定することができます。ユ... 詳細はこちら

#

弊社で無償公開しているconcrete5アドオンRescuework's ... 詳細はこちら