1. firebase web app 생성하기
2. firebase 설치하기
$ npm install firebase
$ quasar new boot firebase
3. boot/firebase.js 파일 수정하기
import { boot } from 'quasar/wrappers'
import { initializeApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";
import { getAuth, onAuthStateChanged } from 'firebase/auth';
import { useAuthStore } from 'stores/auth';
const firebaseConfig = {
apiKey: "###",
authDomain: "###",
projectId: "###",
storageBucket: "###",
messagingSenderId: "###",
appId: "###",
measurementId: "###",
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const analytics = getAnalytics(app);
const auth = getAuth(app);
export { auth };
export default boot(async (/* { app, router, ... } */) => {
const authStore = useAuthStore();
onAuthStateChanged(auth, user => {
console.log('### user', user);
authStore.setUser(user);
});
});
4. quasar.config.js 수정하기
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli-vite/boot-files
boot: [
'firebase', // firebase 추가
],
5. stores/auth.js 파일 생성하기
import { defineStore } from 'pinia';
import { computed, ref } from 'vue';
export const useAuthStore = defineStore('auth', () => {
const user = ref(null);
const isAuthenticated = computed(() => !!user.value);
const setUser = userData => {
user.value = userData;
if (userData) {
user.value = {
uid: userData.uid,
photoURL: userData.photoURL,
displayName: userData.displayName,
email: userData.email,
emailVerified: userData.emailVerified,
};
} else {
user.value = null;
}
};
return {
user,
isAuthenticated,
setUser,
};
});