メインコンテンツまでスキップ

メンバー登録時にドメインによって所属グループを変更する

概要

メンバー登録時にドメインによって所属グループを変更する機能の実装方法を説明します。 Member::insert のエンドポイントはセキュリティ上、default_group_idをフロントエンドから変更できません。
そこで複数のエンドポイントを作成し、カスタム処理を利用して、ドメインによって利用するエンドポイントを振り分けることで機能を実装します。

学べること

以下の手順でドメインによって所属グループを変更する機能を実装します。

前提条件

このチュートリアルでは、エンドポイント及びカスタム処理の作成とSwagger UI を利用した動作の確認までを行います。
また、所属させるグループは事前に作成済みとします。

フロントエンドへの実装はKurocoとNuxt.jsで、新規会員登録画面を構築するを参考に対応をお願いします。

APIの設定

APIの作成

Kuroco内部でのみ利用するエンドポイントはAPIを分けておくことをお勧めします。
そこで、まずは内部利用のためのAPIを新規で作成します。
Kuroco管理画面のAPIより「追加」をクリックします。

Image from Gyazo

API作成画面が表示されるので、下記入力し「追加する」をクリックします。

Image from Gyazo

項目設定内容
タイトルInternal
1.0
ディスクリプション内部処理用のAPI

APIが作成されました。

Image from Gyazo

セキュリティの設定

次にセキュリティの設定をします。[セキュリティ] をクリックします。

Image from Gyazo

セキュリティを[動的アクセストークン]に設定して、[保存する]をクリックします。

Image from Gyazo

セキュリティを[動的アクセストークン]に設定後、Login::tokenのエンドポイントが無い場合、利用をお勧めされますが、内部利用のみの場合は無視して構いません。

Image from Gyazo

CORSの設定

次にCORSの設定をします。[CORSを設定する] をクリックします。

Image from Gyazo

CORS_ALLOW_ORIGINSの [Add Origin] をクリックし、下記を追加します。

  • 管理画面URL

CORS_ALLOW_METHODSの [Add Method] をクリックし、下記を追加します。

  • GET
  • POST
  • OPTIONS

CORS_ALLOW_CREDENTIALSの[Allow Credentials]にチェックが入っていることを確認します。

Image from Gyazo

問題なければ [保存する] をクリックします。

エンドポイントの作成

次にエンドポイントを作成します。
今回はdefault_group_idが異なる2つのMember::insertエンドポイントと、カスタム処理を呼び出すためのApi::request_api_postエンドポイントを作成します。

まずはMember::insertエンドポイントです。
こちらはKuroco内部から呼び出して利用するため、InternalのAPIから[新しいエンドポイントの追加]をクリックして作成します。

Image from Gyazo

以下の2つを作成します。

項目設定内容
パスmember/insert/a
カテゴリーメンバー
モデルMember
オペレーションinsert
default_group_id所属するグループID(101)
login_ok_flgチェックを入れる

Image from Gyazo Image from Gyazo

項目設定内容
パスmember/insert/a
カテゴリーメンバー
モデルMember
オペレーションinsert
default_group_id所属するグループID(102)
login_ok_flgチェックを入れる

Image from Gyazo Image from Gyazo

次にApi::request_api_postエンドポイントです。
こちらはフロントエンドから利用できるAPIに作成します。今回はDefaultのAPIを利用します。 DefaultのAPIから[新しいエンドポイントの追加]をクリックします。

Image from Gyazo

項目設定内容
パスmember/insert
カテゴリーAPI
モデルApi
オペレーションrequest_api_post
namemember_insert
(後で設定するカスタム処理の識別子と一致させます。)

Image from Gyazo Image from Gyazo

以上で利用する3つのエンドが作成できました。 Image from Gyazo Image from Gyazo

カスタム処理の作成

続いて、ドメインによってリクエストを送るエンドポイントを振り分けるカスタム処理を作成します。
[オペレーション] -> [カスタム処理]をクリックします。

Image from Gyazo

[追加]をクリックします。

Image from Gyazo

以下のように入力します。

項目設定
タイトルドメインによって登録先を変える
識別子member_insert
(Api::request_apiエンドポイントのnameと一致させてください。)
処理以下のコードを入力します。
{* POSTされたメールアドレスのドメインで登録先を変える。 *}
{* リクエスト ボディ *}
{assign_array var='body' values=''}
{assign var='body' value=$smarty.post}

{* ドメインが@example.com以外の場合 *}
{if $smarty.post.email|strpos:'@example.com' === false}
{api_internal
var='response'
status_var='status'
endpoint='/rcms-api/4/member/insert/a'
method='POST'
queries=$body
member_id='1'
}
{* ドメインが@example.comの場合 *}
{else}
{api_internal
var='response'
status_var='status'
endpoint='/rcms-api/4/member/insert/b'
method='POST'
queries=$body
member_id='1'
}
{/if}

{assign var=data value=$response}

Image from Gyazo

設定ができたら[追加する]をクリックしてカスタム処理を追加します。

動作確認

最後に動作の確認をします。
DefaultのAPIの[Swagger UI]をクリックします。

Image from Gyazo

作成したエンドポイントの[Try it out]をクリックします。

Image from Gyazo

Request bodyに以下を入力して[Execute]をクリックします。

{
"email": "example@example.com",
"name1":"Diverta",
"name2":"Taro",
"login_pwd":"********"
}

Image from Gyazo

"新規追加しました"のメッセージとメンバーIDの表示を確認します。

Image from Gyazo

続いて、Request bodyに以下を入力して[Execute]をクリックします。

{
"email": "test@test.com",
"name1":"Diverta",
"name2":"Jiro",
"login_pwd":"********"
}

Image from Gyazo

"新規追加しました"のメッセージとメンバーIDの表示を確認します。

Image from Gyazo

メンバー一覧ページで登録されたメンバーを確認すると、Diverta Taro と Diverta Jiro で所属するグループが異なることを確認できます。
Image from Gyazo

以上でメンバー登録時にドメインによって所属グループを変更する機能の実装ができました。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。