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-26 16:23:45 +02:00
|
|
|
const userAllPersons = ref([])
|
2022-09-27 16:00:09 +02:00
|
|
|
const calEvents = 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-27 16:00:09 +02:00
|
|
|
provide('firebase', { db, ledenlijst, isAuthenticated, user, userData, userPersons, auth, userAllPersons, getPersons, calEvents })
|
2022-09-19 09:36:47 +02:00
|
|
|
</script>
|