const admin = require('firebase-admin'); module.exports = (req, res, next) => { res.set('Access-Control-Allow-Origin', ['*']); if (req.method === 'OPTIONS') { res.status(200).send(); return next(); } if (req.headers.authorization) { try { const token = req.headers.authorization.split(' ')[1]; const reqToken = token.split(':')[0]; const reqUid = token.split(':')[1]; admin .auth() .verifyIdToken(reqToken) .then((user) => { if (user.uid === reqUid) { console.info('Verified Token - UID - ', reqUid); if (req.method === 'POST') { const bodydata = JSON.parse(req.body); bodydata.uid = user.uid; req.body = JSON.stringify(bodydata); } if (req.method === 'GET' || req.method === 'DELETE' || req.method === 'PUT') { req.body = JSON.stringify({ uid: user.uid }); } return next(); } else { return res.status(401).send({ message: 'Unauthorized' }); } }) .catch((err) => { console.error('Failed Auth - ', req.headers.authorization, '\n', err); return res.status(500).send({ message: 'Unable to verify user token' }); }); } catch (err) { console.log(err); return res.status(401).send({ message: 'Something went wrong when authorizing' }); } } else return res.status(401).send({ message: 'Got no user token' }); };