ResetPasswordAPIのパラメータ"host"について

ResetPasswordAPIのパラメータ"host"が必須となっていますが、
どんな値を設定しても"email"で指定したメールアドレスが登録されていれば、
レスポンスの"valid_email"にtrueが返ってきます。
パラメータ"host"はAPIでどのように使用されているのでしょうか?

本件、調査の上改めて回答させていただきます。
どうぞよろしくお願い致します。

1 Likes

上記回答に合わせて、以下の質問事項についても回答をお願い致します。

ResetPasswordAPIから送信されるパスワード再設定メールのパスワードリセット画面へのリンクURLをスクラッチで作成した画面のURLに変更が可能でしょうか?
また、上記URLにGETパラメータを設定することは可能でしょうか?

本件、ご連絡が遅くなり申し訳ございません。
合わせて確認致します。
どうぞよろしくお願い致します。

1 Likes

ドキュメントの記載に誤りがありましたので修正いたしました。大変失礼しました。
ResetPassword | Hexabase API ガイド (b-eee.github.io)

Hostが必須となっておりましたが、こちらは必須ではなく、固有のSendgridテンプレートを利用する際に指定する値となります。

まず、固有のSendgridメールテンプレートを使用する場合は、事前に弊社へご連絡いただく必要があります。(将来、御社で指定可能な画面を準備しますが、現在は弊社にて設定する必要があるため、です)
弊社での必要事項の設定が終わると、御社向けのemail_template_idが発行されます。
APIにこの値を指定することで、個別のメールテンプレートとURLを指定することが可能となります。
この場合、hostの値には、メール内に含めるリンク先Hostをプロトコル+FQDN(https://your-frontend.com)のように指定します。
パスワード再設定の画面を個別に開発する場合にご利用いただけます。

詳しくは改めて手順を記載の上、連絡いたします。

詳細情報の連携をいただく。

6月1週目目標で提示していただく。

1 Likes

@iwasaki.hexabase
お忙しいところ申し訳ございません。本件開発に影響が出てきております。
最遅でも6月11日(金)の午前中必須でお願いできますでしょうか?

パスワードリセット機能を実装する際の全体像が分かる資料をいただきたい。
(きれいなものじゃなくて開発ができるメモレベルでも、構いません開発が進められる資料をいただきたいです。)

もしも、あればサンプルにできるコードがあれば、提供していただけませんでしょうか?

@k-otani こちらお待たせしておりまして申し訳ありません。
今週中に情報を整理してお伝えいたします。
どうぞよろしくお願いいたします。

すべて出そろっていなくても途中段階まででも構いませんので随時情報展開をお願いいたします。

@k-otani 取り急ぎ以下情報をお伝えします。

お客様用Sendgridのアカウントについては準備されておりますでしょうか。
もしご準備できているようでしたら、Hexabase側の設定として以下を行いますので、
情報提供いただければ、該当ワークスペースへ設定いたします。

以下、手順の抜粋です


お客様用にSendgridアカウントを作成します。

設定対象のワークスペースと、
Sendgridのキー情報、テンプレートID、送り主のメールアドレスをHexabase社へ連絡します。

{
    "sendgrid_settings" : {
        "key" : "SG.XXXXXXXXXXX-XXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXXX",
        "sender" : "noreply@your-customer.co.jp"
    },
    "templates" : {
        "invite" : "xxxxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx",
        "signup" : "d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "forget_password" : "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
        "update_email" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
    }
}

Hexabase社にて設定が完了すると、以下のタイミングでそれぞれお客様用のSendgridを利用してメールが送信されます。

  • ユーザInvite時(既存のワークスペースへの招待メール)
  • パスワード忘れ時のメール
  • メールアドレス更新時の確認メール
  • 新規ユーザーサインアップ時(最初のワークスペースを作成する)

引き続き順次情報をご提供してまいります。
上記時点で不明な点がございましたら、ご連絡ください。

@iwasaki.hexabase
メールテンプレート関連の情報、ありがとうございました。
お手数ですが、上記内容をもう少し詳しく実装よりの情報を追加で頂けると助かります。

【最終ゴール】
・送付されたメールのURLからカスタムの画面を使ってパスワードリセットしたい
・「ResetPassword」API送信時、追加のパラメータを持たせたいという2点が焦点となります。
以下に具体的な流れを記載します。

【現状】
※以下、メールテンプレートはデフォルトのものを使う想定です

1.「ResetPassword」APIを利用パラメータは

{
  "email":"[dummy@dummy.com](mailto:dummy@dummy.com)"
  "email_templates_id" :
  "host":"[https://dummyhost.xxx](https://dummyhost.xxx/)"
}

の3つを持って通信します。

2.自動返信メールが手順1の「email」パラメータに指定されたアドレスに送付
3.送付されたメールの下部の「ここをクリックして再設定画面へ」ボタンを押下
4.「手順1の"host"の値」+「/reset_password/」 +「一意キー」で生成されたURLに遷移https://dummyhost.xxx/reset_password/一意のキー問題点として
・カスタムの画面のURLに到達しない
・追加でパラメータを付与できない
がございます。

【理想】
1.「ResetPassword」APIを利用パラメータは

{
  "email":"[dummy@dummy.com](mailto:dummy@dummy.com)"
  "email_templates_id" :
  "host":"[https://dummyhost.xxx](https://dummyhost.xxx/)"
  "custom_screen":"custom_screen"
  "custom":"custom_param"
}

の5つを持って通信します。

※custom_screen,customは理想的にはこの様な動きがしたいという為、説明の為に追加しています

2.自動返信メールが手順1の「email」パラメータに指定されたアドレスに送付
3.送付されたメールの下部の「ここをクリックして再設定画面へ」ボタンを押下
4.「手順1の"host"の値」+「手順1の"custom_screen"の値」 +「一意キー」+「カスタムパラメータ」で生成されたURLに遷移https://dummyhost.xxx/カスタムのパスワードリセット画面/一意のキー+カスタムパラメータ上記の様な流れを実現する為、手順や情報が頂けると助かります。

@iwasaki.hexabase @jeanepaul
本件、いかがでしょうか?
開発に影響が発生してしまうため、情報を早急にいただきたく思います。

ご回答にお時間がかかってしまい申し訳ありません。

まず、現時点の仕様についてお伝えします。

ご理解いただいております通り、現在は以下の仕様に従って動作いたします。

(1)標準パターン

Reset Password Payload

{
  "email":"dummy@dummy.com"
}

Eメール内のリンクをクリックすると、以下URLへ遷移します。

「hexabase UI」+「/reset_password/」 +「一意キー」

(2)特定のフロントエンドホストへ遷移させるパターン

Reset Password payload

{
  "email": "dummy@dummy.com",
  "host": "(フロントエンド画面のホストアドレス)"
}

例えば、コード内では以下のように実装します。(basePath等の詳細は省略します)

const params = {
                email: this.state.forgotpassForm.email,
                host: `https://${window.location.host}`
            }
axios.post(basePath + 'users/password/forgot' , params).subscribe( ... 

上記により、フロントエンド側に準備したURLにリダイレクトされます。

「フロントエンド UI」+「/reset_password/」 +「一意キー」

/reset_password/xxxxxxxxxxxxxxxxxxxxxxxxxxx(一意キー) については、現在固定となります。

(3)個別のSendgridアカウントを使用して、独自メールテンプレートを利用する場合

先日の @iwasaki.hexabase のコメントにあるように、事前にSendgridアカウントを発行し、該当のAPI Key情報と、 forget_password で利用するテンプレートIDを事前にHexabase社へ連絡します。

テンプレート作成時、メール本文内のメールリンクを以下のように埋め込みます。

<%body%>

上記 body 部分に、リダイレクト先を含むURL情報が埋め込まれます。

※メール内のデザインは自由に指定可能です

埋め込まれるリダイレクト先情報については、(1)(2)の仕様に従います。
従って、現時点では、「/reset_password/」 +「一意キー」は固定であり、追加パラメータ指定はできません。

ご要望いただきました点を踏まえた、今後の改修方針については、本日この後、 @iwasaki.hexabaseより連絡させていただきますので、今少しお待ちくださいませ。

どうぞよろしくお願いいたします。

@k-otani 続けざまに失礼いたします。

この度のご要望を受けまして、 ResetPassword APIの拡張を以下のように検討しております。

リクエストPayloadの追加とリダイレクト先指定について

ResetPasswordのPostパラメータとして以下のように指定できるようにいたします。

{
  "email": "dummy@dummy.com",
  "host": "(フロントエンド画面のホストアドレス)",
  "base_path":  "(reset_password に相当する部分のURL内のパス)" ,  // optional 
  "query_params": "(一意キーの後続くGETパラメータを指定)"  // optional  ? より後を指定する
}

これにより、例えば以下のようなPayloadにて送信した場合、

{
  "email": "dummy@dummy.com",
  "host": `https://${window.location.host}`,
  "root_path":  "pwd_reset" ,
  "query_params": "param1=AAA&param2=BBB"
}

Eメールに埋め込まれるリンクは以下にリダイレクトされるように生成されます。
(host名が、my-app.hexabase.comだった場合)

https://my-app.hexabase.com/pwd_reset/xxxxxxx(一意なキー 中略)xxxxxxx?param1=AAA&param2=BBB

上記仕様で問題ないようでしたら、修正作業を進めます。
今週金曜日をリリースを目途としております。
(諸々割込み状況により前後する可能性があること、ご容赦ください。)

どうぞよろしくお願いいたします。

@iwasaki.hexabase

上記仕様で問題ないようでしたら、修正作業を進めます。
今週金曜日をリリースを目途としております。
(諸々割込み状況により前後する可能性があること、ご容赦ください。)

上記APIの改修の件、ご対応をよろしくお願いいたします。

@k-otani
承知いたしました。
作業を進めます。
どうぞよろしくお願い致します。

@k-otani 本件、本日対応版 がリリースされました。
リリースノートについては追ってお知らせいたしますが、取り急ぎ、連絡差し上げます。

ResetPassword | Hexabase API ガイド (b-eee.github.io)

どうぞよろしくお願いいたします。