パスワード再発行フォームの作成
「パスワード再発行フォーム」を利用して、ユーザーがパスワードをリセットする機能を提供できます。
フロー
- ユーザーがメールアドレスを入力する。
POST /api/v1/lookup_member_idAPI でメールアドレスから会員 ID を検索する。- 見つかった会員 ID を使い、
POST /api/v1/do_member_form_actionAPI でパスワード再発行処理を実行する。 - KREISEL の自動返信メール機能により、新しいパスワードがユーザーに通知される。
備考
この機能を利用するには、事前に KREISEL 管理画面で 「パスワード再発行フォーム」 を作成し、自動返信メールを設定しておく必要があります。
実装サンプル
- PHP
<?php
// 環境情報
$environmentId = getenv('ENV_ID');
$apiToken = getenv('API_TOKEN');
$dbId = 3; // データベース ID
$formId = 30; // パスワード再発行フォームの ID
// ユーザーが入力したメールアドレス
$email = 'foo@example.com';
// ----- 1. lookup_member_id で会員 ID を検索 -----
$lookupUrl = "https://krs.bz/$environmentId/api/v1/lookup_member_id";
$lookupBody = [
'member_table_id' => $dbId,
'member_info' => [
// メールアドレスの項目名は `e_DB項目ID` 形式
'e_49' => $email,
],
];
$ch = curl_init($lookupUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($lookupBody));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
]);
$lookupResponse = curl_exec($ch);
$lookupHttpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($lookupHttpCode !== 200) {
die('会員 ID の検索に失敗しました。');
}
$memberId = json_decode($lookupResponse, true);
// ----- 2. do_member_form_action でパスワードを再発行 -----
if ($memberId > 0) {
$resetUrl = "https://krs.bz/$environmentId/api/v1/do_member_form_action";
$resetBody = [
'member_form_id' => $formId,
'member_id' => $memberId,
'member_info' => new stdClass(), // パスワード再発行時は空のオブジェクト
];
$ch = curl_init($resetUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($resetBody));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
]);
$resetResponse = curl_exec($ch);
$resetHttpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($resetHttpCode === 200) {
echo 'パスワード再発行のメールを送信しました。';
} else {
echo 'パスワードの再発行に失敗しました。';
// エラー内容をログに出力するなどの処理
// var_dump($resetResponse);
}
} else {
echo 'そのメールアドレスは登録されていません。';
}