/**
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
*/
exports.onExecutePostLogin = async (event, api) => {
// Skip the redirect if the user has already chosen a favorite color.
if (event.user.user_metadata.favorite_color) {
return;
}
const token = api.redirect.encodeToken({
secret: event.secrets.MY_SHARED_SECRET,
payload: {
email: event.user.email,
},
});
// Send the user to https://my-app.example.com along
// with a `session_token` query string param.
api.redirect.sendUserTo("https://my-app.example.com", {
query: { session_token: token }
});
};
/**
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
*/
exports.onContinuePostLogin = async (event, api) => {
// Once the /continue endpoint has been called, unpack the signed token
// and store the favorite color as user metadata.
const payload = api.redirect.validateToken({
secret: event.secrets.MY_SHARED_SECRET,
});
api.user.setUserMetadata("favorite_color", payload.favorite_color);
};