firebase consoleでAuthenticationを選択する
ログイン方法を設定する
↓
メールアドレスとパスワードを設定した場合
↓
Firebase用の設定ファイルを作成する(歯車のプロジェクトの設定)
↓
構成に書いてあるオブジェクトの値をコピーする
↓
firebaseのディレクトリーを作成する
↓
firebaseのフォルダの中にconfig.tsのファイルを作成
↓
config.tsにexport const firebaseConfig = {}の形で構成のオブジェクト値を入れる
↓
firebaseのフォルダの中にindex.tsのファイルを作成
index.ts
import firebase from 'firebase/app'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/storage'
import 'firebase/functions'
import {firebaseConfig} from './config'
firebase.initializeApp(firebaseConfig);
export const auth = firebase.auth();
export const db = fitrbase.firestore();
export const storage = firebase.storage();
export const functions = firebase.functions();
export const FirebaseTimestamp = firebase.firestore.TimeStamp;
firestoreへのユーザー登録の追加
signUp.tsx(reduxで書いているのでreactやnextで書く場合は変更する必要があり)
export const signUp = (username, email, password, confirmPassword) => {
return async (dispatch) => {
// Validations
if(!isValidRequiredInput(email, password, confirmPassword)) {
alert('必須項目が未入力です。');
return false
}
if(!isValidEmailFormat(email)) {
alert('メールアドレスの形式が不正です。もう1度お試しください。')
return false
}
if (password !== confirmPassword) {
alert('パスワードが一致しません。もう1度お試しください。')
return false
}
if (password.length < 6) {
alert('パスワードは6文字以上で入力してください。')
return false
}
return auth.createUserWithEmailAndPassword(email, password)
.then(result => {
dispatch(showLoadingAction("Sign up..."))
const user = result.user;
if (user) {
const uid = user.uid;
const timestamp = FirebaseTimestamp.now();
const userInitialData = {
customer_id: "",
created_at: timestamp,
email: email,
role: "customer",
payment_method_id: "",
uid: uid,
updated_at: timestamp,
username: username
};
usersRef.doc(uid).set(userInitialData).then(async () => {
// const sendThankYouMail = functions.httpsCallable('sendThankYouMail');
// await sendThankYouMail({
// email: email,
// userId: uid,
// username: username,
// });
dispatch(push('/'))
dispatch(hideLoadingAction())
})
}
}).catch((error) => {
dispatch(hideLoadingAction())
alert('アカウント登録に失敗しました。もう1度お試しください。')
throw new Error(error)
})
}
}