wrbapp/frontend/app.vue

78 lines
2.2 KiB
Vue
Raw Normal View History

2022-09-15 19:15:07 +02:00
<template>
2022-09-20 15:53:44 +02:00
<div v-if="!userLoaded" class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex flex-col">
Loading
</div>
<div v-else>
<div v-if="isAuthenticated" class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex flex-col">
<LayoutTopbar />
<div class="overflow-y-auto pt-3">
<NuxtPage />
</div>
<LayoutNavbar class="mt-auto" />
</div>
<div v-else class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex flex-col">
<Login />
2022-09-19 15:11:13 +02:00
</div>
2022-09-15 19:15:07 +02:00
</div>
2022-09-19 09:36:47 +02:00
</template>
<script setup>
2022-09-22 16:39:11 +02:00
import { doc, getFirestore, serverTimestamp, writeBatch, collection, getDoc } from "firebase/firestore";
2022-09-20 15:53:44 +02:00
import { getAuth, onAuthStateChanged, signInWithEmailAndPassword } from "firebase/auth";
2022-09-19 09:36:47 +02:00
const db = getFirestore()
2022-09-20 15:53:44 +02:00
const route = useRoute()
const isAuthenticated = ref(false)
const user = ref('frikandel')
const auth = ref(null)
const userLoaded = ref(false)
2022-09-22 16:39:11 +02:00
const userData = ref(null)
const userPersons = ref([])
2022-09-20 15:53:44 +02:00
onMounted(() => {
auth.value = getAuth()
2022-09-22 16:39:11 +02:00
onAuthStateChanged(auth.value, async (usr) => {
2022-09-20 15:53:44 +02:00
if (usr) {
user.value = usr
2022-09-22 16:39:11 +02:00
let docRef = doc(db, "users", user.value.uid);
let docSnap = await getDoc(docRef);
if (docSnap.exists()) {
const data = docSnap.data()
userData.value = data
getPersons(userData.value.relatiecodes)
}
isAuthenticated.value = true
2022-09-20 15:53:44 +02:00
} else {
isAuthenticated.value = false
user.value = null
2022-09-22 16:39:11 +02:00
userData.value = null
userPersons.value = []
2022-09-20 15:53:44 +02:00
}
userLoaded.value = true
})
})
2022-09-19 09:36:47 +02:00
2022-09-22 16:39:11 +02:00
const getPersons = async (persons) => {
userPersons.value = [];
for (let i = 0; i < persons.length; i++) {
const docRef = doc(db, "ledenlijst", persons[i]);
const docSnap = await getDoc(docRef);
2022-09-19 09:36:47 +02:00
2022-09-22 16:39:11 +02:00
if (docSnap.exists()) {
userPersons.value.push(docSnap.data())
}
}
}
const ledenlijst = ref([])
2022-09-19 15:11:13 +02:00
2022-09-22 16:39:11 +02:00
provide('firebase', { db, ledenlijst, isAuthenticated, user, userData, userPersons, auth })
2022-09-19 09:36:47 +02:00
</script>