@totsuka999

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Firebaseでのユーザー登録について

解決したいこと

初心者です。
現在FirebaseとReactを利用して簡単なユーザー管理システムを作る勉強をしています。
目標としている管理方法としては以下の通りです。

 ・ユーザー管理はMailとPasswordでの管理
 ・登録方法はログイン済みのユーザーが、別のユーザーを登録(招待)する

FirebaseのAuthenticationにユーザーを作成し、ログインする所まではできましたが、
別のユーザーを作成する手段が見つかりません。

createUserWithEmailAndPasswordを試しましたが、ユーザー自体は登録できますが、
ログイン中のカレントユーザーがcreateUserWithEmailAndPasswordで作成したユーザーに
切り替わってしまう問題が出てしまいました。

createUserWithEmailAndPasswordまたは類似した方法で、ユーザー登録のみを行う事は可能でしょうか?
解決方法を教えて下さい。

該当するソースコード

    //ログイン済み状態として
    const auth = getAuth();

    console.log( auth.currentUser );  // ←この時点ではログインユーザーとなっている
    await createUserWithEmailAndPassword(auth, "hogehoge@mail.com", "passABC123" );
    console.log( auth.currentUser );  // ←ここではhogehoge@mail.comに変わってしまっている

自分で試したこと

少し調べた所、Firebase-adminのcreateUserを使えば思っている事は出来そうですが、
その場合は招待者の端末にセキュリティトークンを入れる等の手間が発生しそうな感じでした。

出来れば簡単な招待の仕組みとしたいので、こういった手間がかからないようにしたいです。
もしくはセキュリティトークンが不要な形での運用は可能でしょうか?
(もちろんトークンをコードに直接書き込む等は無しとして)

0 likes

1Answer

少し調べた所、Firebase-adminのcreateUserを使えば思っている事は出来そうですが、

ここらへんですかね?

0Like

Comments

  1. @totsuka999

    Questioner

    返信有難うございます。
    ご指摘の通りFirebase Admin SDKを使えば良さそうですが、
    「サービスアカウントとして秘密鍵を作成して、それをファイルに置いて、読み込んで・・・」
    等の手順が必要になり、ユーザーを追加する人や環境を特定する必要が出てしまいそうな気がしています。

    上記にも記載した通り、招待のような感じで誰でもユーザーが追加できる形が理想なのですが難しいでしょうか?
    それとも資料を読み間違えているだけで、秘密鍵等はセキュリティを考慮しなければ不要で、
    Firebase Adminが利用可能なのでしょうか?

  2. 登録方法はログイン済みのユーザーが、別のユーザーを登録(招待)する

    招待ということであれば、

    「ログイン済みのユーザー」が、招待画面で「別のユーザー」のメールアドレスを入力

    「別のユーザー」にメールにて登録画面のURLが届く

    「別のユーザー」が、登録画面からユーザー登録を行う。

    のような形がよさそうな気がします。

  3. @totsuka999

    Questioner

    リンクさえ知っていれば、だれでも登録できる・・・という状況は避けたいと思っています。

    最終的には
    「登録したユーザー毎にRoleのような物を持たせて、権限を持った人が招待してユーザーを追加できる」
    (秘密鍵等のセキュリティ重視までは不要な、軽い感じの物)

    みたいな事を考えていましたが、こういった考え方はあまり一般的では無いんでしょうかね?

  4. リンクさえ知っていれば、だれでも登録できる・・・という状況は避けたいと思っています。

    上記の場合などは、
    登録画面はメールアドレスは固定(変更不可)で、登録情報入力後に再度メールを送り、
    そのメールの記載されたURLを開くことで登録が完了する仕組み(メールリンク認証)などで回避できると思います。

  5. @totsuka999

    Questioner

    有難うございます!
    まだ読んだだけで理解が追いついていませんが、やりたい事はこれで出来そうです
    テストコードを実装するのに時間がかかりそうですので、まずはお礼のみさせて頂きます。

Your answer might help someone💌