【Next.js】StripeとFirestoreとFirebase Authenticationのユーザー同時削除
以前まとめたこちらの記事の続きとなります。
nekorokkekun.hatenablog.com
以前の段階で、StripeとFirestoreとFirebase Authenticationのユーザーを同時に作成することができました。
こちらの記事では、タイトルの通り、
StripeとFirestoreとFirebase Authenticationのユーザーを同時に削除
します。
図解
流れとしては簡単で、
- コンソールのFirebase Authenticatonからユーザー削除
- functionsのcleanupUserが起動
- Stripeに紐づく顧客アカウントを削除
- Firestoreに紐づくstripe_custmersの該当ドキュメントを削除
という感じになります。
一応、各コンソールを確認しておくと以下のとおりです。
Firebase Authentication
Firestore
Stripe
このように並べてみると、
uid => Firebase AuthenticationとFirestore
customer_id => FirestoreとStripe
とそれぞれつながっていることが分かりますね。
実装
以下のコードを追記しましょう。
functions/index.js
exports.cleanupUser = functions.auth.user().onDelete(async (user) => { const snapshot = await admin.firestore().collection('stripe_customers').doc(user.uid).get(); const customer = snapshot.data(); await stripe.customers.del(customer.customer_id); return admin.firestore().collection('stripe_customers').doc(user.uid).delete(); });
後はfunctionsディレクトリ内で以下のコマンドを実行すればOKです。
$ yarn deploy
Firebase FunctionsにcleanupUserがデプロイされたことを確認し、Firebaseのコンソール > Authentication からユーザーを削除してみましょう。
すると、cleanupUserが起動してStripeとFirestoreの紐づいたユーザーが削除されたはずです。