search
LoginSignup
2

More than 1 year has passed since last update.

posted at

firebaseのauthenticationで管理側で強制的にユーザのパスワードを再設定する方法(続・firefooはいいぞぉ)

こんにちは。もぐめっとです。
IMG_1058 2.jpg
最近本格的なシーズンインに向けて初心者なりに練習を頑張ってます。

本日はパスワードを再設定する方法について、よくある例と、2つの強制的にやる方法を紹介します。

よくあるパスワード再設定例

よくある例としてはユーザ側で設定する実装例、もしくはパスワードの再設定メールを送信する実装例があげられます。
しかし、問題はユーザがキャリアメールを使っていて、別のキャリアに変えてメールが届かない状態と、パスワードを忘れてしまった状態のユーザの対応に困ります。
上記の実装だとログインができている、もしくはメールが届くという前提でリセットすることができますが、この問題のパターンだと再設定ができなくなってしまいます。

firebaseのコンソールから再設定という枠もあるのですが、、、
image.png

再設定するメールを送るだけという先程の実装例と変わらないことになります。
image.png

firebase-adminでパスワードを再設定する

ということで問題のユーザにどう対応するかというとfirebase-admin/authにある、updateUserを使うことで強制的にパスワードを再設定できます。

admin
  .auth()
  .updateUser(uid, {
    email: 'modifiedUser@example.com',
    phoneNumber: '+11234567890',
    emailVerified: true,
    password: 'newPassword',
    displayName: 'Jane Doe',
    photoURL: 'http://www.example.com/12345678/photo.png',
    disabled: true,
  })
  .then((userRecord) => {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully updated user', userRecord.toJSON());
  })
  .catch((error) => {
    console.log('Error updating user:', error);
  });

passwordという項目があるので簡単に再設定ができることを確認できます。
なので更新用に実装をする必要がありますね。

firefooを使う

実はもう一つもっとお手軽な方法があって、それは先日紹介したfirefooを使うというものがあります。

authenticationの一覧を見る機能がありまして、ユーザの詳細を見ると・・・

image.png
なんとパスワードの再設定ができてしまうではないか!!
超絶便利です。
よかったら使ってみてください。

まとめ

パスワードを再設定する方法としてadmin.auth().updateUser()を使う方法とfirefooのauthentication機能を紹介しました。
パスワードにお困りの方がいたら是非お使いいただければと存じます。

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

他にもCameconOffchaといったサービスも作ってるのでよかったら使ってね!

また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2