63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
const admin = require('firebase-admin');
|
|
|
|
module.exports = async (req, res) => {
|
|
console.log('Requested Delete - Room - ', req.params.rid);
|
|
console.log(req.body);
|
|
const isAdmin = await admin
|
|
.firestore()
|
|
.collection('rooms')
|
|
.doc(req.params.rid)
|
|
.collection('users')
|
|
.doc(JSON.parse(req.body).uid)
|
|
.get()
|
|
.then((v) => {
|
|
if (v.exists) {
|
|
return v.data().admin;
|
|
}
|
|
return false;
|
|
});
|
|
if (!isAdmin) {
|
|
console.log('[UNAUTHORIZED] Requested Delete - Room - ', req.params.rid);
|
|
res.status(401).send({ message: 'Not authorized to end this party.' });
|
|
return;
|
|
}
|
|
await admin
|
|
.firestore()
|
|
.collection('rooms')
|
|
.doc(req.params.rid)
|
|
.collection('messages')
|
|
.listDocuments()
|
|
.then((messages) => messages.forEach((message) => message.delete()))
|
|
.catch((err) => {
|
|
console.error(
|
|
`Failed to delete room messages : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`,
|
|
err
|
|
);
|
|
});
|
|
await admin
|
|
.firestore()
|
|
.collection('rooms')
|
|
.doc(req.params.rid)
|
|
.collection('users')
|
|
.listDocuments()
|
|
.then((users) => users.forEach((user) => user.delete()))
|
|
.catch((err) => {
|
|
console.error(
|
|
`Failed to delete room users : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`,
|
|
err
|
|
);
|
|
});
|
|
await admin
|
|
.firestore()
|
|
.collection('rooms')
|
|
.doc(req.params.rid)
|
|
.delete()
|
|
.catch((err) => {
|
|
console.error(
|
|
`Failed to delete room : \n\t Room: ${req.params.rid} \n\t User: ${req.params.uid}`,
|
|
err
|
|
);
|
|
});
|
|
res.status(200).send({ message: 'Ended the party' });
|
|
};
|