Cognito User Poolsでパスワード忘れた状態でメアド変更したら詰みかけた話
ログインしたまま作業してたらパスワード忘れたってことありませんか? これは開発時のデバッグで、パスワード変更→メールアドレス変更→ログアウト→「あれ、パスワードなんだっけ」ってなって詰みかけた話です。 なぜ詰みかけた メ […]
広告ここから
広告ここまで
目次
ログインしたまま作業してたらパスワード忘れたってことありませんか?
これは開発時のデバッグで、パスワード変更→メールアドレス変更→ログアウト→「あれ、パスワードなんだっけ」ってなって詰みかけた話です。
なぜ詰みかけた
- メールアドレスを変更している
- 変更したメールアドレスの認証をしていなかった
- メールアドレスの認証はログインしていないとダメ
- パスワードがわからないから入れない
- メールアドレスが認証されてないので、パスワード再発行ができない
- \(^o^)/
Cognito User Poolに作成されたユーザーの情報はマネージドコンソールからいじれないので、通常のユーザーであれば完全に詰んでる状態に・・・
困った時のaws-sdk (多分CLIでもいける)
幸い自分が開発に関わってるサービス(だから詰むような操作したともいえる)だったので、裏側でなんとかしました。
const AWS = require('aws-sdk')
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
const params = {
UserAttributes: [ /* required */
{
Name: 'email_verified', /* required */
Value: 'true'
},
],
UserPoolId: 'ap-northeast-1_XXXXX', /* required */
Username: 'example_user' /* required */
};
cognitoidentityserviceprovider.adminUpdateUserAttributes(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
こんな感じのコード書いて、email_verified
をtrueにしてやればパスワード再発行ができます。
万が一同じようなことをして詰んだユーザーから問い合わせがきたらこれで対応すると思います。