共同作業リストに沿って、Firebase を使用して Web アプリを構築しようとしています。ユーザーのグループにはそれぞれ共有リストがあり、誰かが特定のリストにアクセスできるようにするには、グループを開始するか、グループに招待される必要があります。以前にサイトを使用したことがないユーザーを含め、招待は電子メールで送信されます。私の目的はサーバー側のコードを避けることであり、AngularJS を使用しています。各グループのリストには独自の URL があります。
サイトへのログインは、Facebook またはユーザー名と電子メールで行います。Facebook経由で他のFacebookユーザーを招待する方法があると思いますが、Facebookアプリは避けたいと思います。簡単にするために、ユーザーがログインしているにもかかわらず、一般的な招待システムに固執したいと思います。したがって、私はシステムを意図しています次のように動作します。
グループの既存のメンバーは、意図した新しいメンバーの電子メール アドレスを入力します。JavaScript はランダムな英数字のトークンを生成し、このトークンを使用して、次のように Firebase の招待場所の新しい子を作成します。
"invites": {
"12345ABC": "Group Name"
},
これらのセキュリティ ルールで
"invites": {
".read": false,
".write": false,
"$token": {
".read": true
}
}
そうすれば、トークンがそこにあることがわかっている場合にのみトークンを読み取ることができます。
トークンで終わるグループの共有リストのメール アドレスと URL は、Firebase のメール キューの場所に子として追加されます。次に、Zapier (または同様のもの) は、この子が追加されたイベントを検出し、受信者に招待 URL を電子メールで送信します。email_queue は、招待受信者のプライバシー保護のために、Zapier またはその他の cron-type-thing によってのみ読み取ることができます。(編集:Zapierは、操作する場所を削除するオプションを提供し、スペースを節約するためにそれを使用すると思います)。
受け取ったリンクをクリックしたユーザーは、Facebook でログインするか、電子メールとパスワードでアカウントにサインアップすると、グループに追加されます。
上記は賢明ですか、それとも私が見ていないセキュリティホールがありますか?
副次的な質問: カウンターを維持する安全な方法が見当たらないため、電子メール アドレスの長いリストを持つ悪意のあるユーザーが多数の招待をトリガーしてシステムを妨害し、それによって電子メール プロバイダーの送信制限に達するのを防ぐ方法はありますか? ? (Zapier はこれを提供していないようです)。