/**
* @param {Event} event - ログインするユーザーと、そのコンテキストに関する詳細。
* @param {PostLoginAPI} api - ログイン時の動作を変更するためのメソッドを提供するインターフェース。
*/
exports.onExecutePostLogin = async (event, api) => {
// ユーザーがすでに好きな色を選択している場合は、リダイレクトを行いません。
if (event.user.user_metadata.favorite_color) {
return;
}
const token = api.redirect.encodeToken({
secret: event.secrets.MY_SHARED_SECRET,
payload: {
email: event.user.email,
},
});
// ユーザーを https://my-app.example.com にリダイレクトし、
// `session_token` クエリ文字列パラメーターを付加します。
api.redirect.sendUserTo("https://my-app.example.com", {
query: { session_token: token }
});
};
/**
* @param {Event} event - ログインするユーザーと、そのコンテキストに関する詳細。
* @param {PostLoginAPI} api - ログイン時の動作を変更するためのメソッドを提供するインターフェース。
*/
exports.onContinuePostLogin = async (event, api) => {
// /continue エンドポイントが呼び出されたら、署名付きトークンを復号し、
// 好きな色をユーザーメタデータとして保存します。
const payload = api.redirect.validateToken({
secret: event.secrets.MY_SHARED_SECRET,
});
api.user.setUserMetadata("favorite_color", payload.favorite_color);
};