wrbapp/backend/index.js
Xeovalyte c423b0da44
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
added topic to messages
2022-11-08 14:41:39 +01:00

112 lines
3.1 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
const { getMessaging } = require('firebase-admin/messaging')
const { verifyIdToken } = require('firebase-admin/auth')
const serviceAccount = require('./firebase.json');
initializeApp({
credential: cert(serviceAccount)
});
const db = getFirestore();
const app = express();
app.use(express.json());
app.use(cors({
origin: '*',
}));
app.listen(7289, () => console.log('API is online!'));
app.get('/', (req, res) => {
res.status(200).send({
status: 'success',
});
});
app.post('/checkrelatiecode', async (req, res) => {
const { relatiecode, email } = req.body;
if (!relatiecode) return res.status(400).send({ code: 'no-relatiecode'})
if (!email) return res.status(400).send({ code: 'no-email'})
try {
const docRef = db.collection('ledenlijst').doc(relatiecode);
const doc = await docRef.get();
if (!doc.exists) return res.status(400).send({ code: 'incorrect'})
const data = doc.data()
if (data.email[0] === email || data.email[1] === email) {
return res.status(200).send({ code: 'correct'})
} else {
return res.status(400).send({ code: 'incorrect'})
}
} catch (e) {
return res.status(500).send({ code: 'error', error: e })
}
})
app.post('/getrelatiecodes', async (req, res) => {
const { email } = req.body;
if (!email) return res.status(400).send({ code: 'no-email'})
try {
const ledenlijstRef = db.collection('ledenlijst')
const snapshot = await ledenlijstRef.where("email", "array-contains", email).get()
if (snapshot.empty) {
res.status(400).send({ code: 'no-relatiecodes'})
return;
}
let relatiecodes = [];
let persons = [];
snapshot.forEach(doc => {
relatiecodes.push(doc.id)
const data = doc.data()
persons.push({ fullName: data.fullName, relatiecode: doc.id })
});
res.status(200).send({ code: 'success', relatiecodes: relatiecodes, persons: persons })
} catch (e) {
return res.status(500).send({ code: 'error', error: e })
}
})
app.post('/subscribetotopic', async (req, res) => {
const { topic, registrationToken } = req.body;
if (!topic) return res.status(400).send({ code: 'no-topic'})
if (!registrationToken) return res.status(400).send({ code: 'no-registrationToken'})
try {
getMessaging().subscribeToTopic([registrationToken], topic)
.then((response) => {
console.log('Successfully subscribed to topic:', response);
res.status(200).send({ code: 'success' })
})
.catch((error) => {
console.log('Error subscribing to topic:', error);
return res.status(500).send({ code: 'error', error: e })
});
} catch (e) {
return res.status(500).send({ code: 'error', error: e })
}
})