MotorSignal-App/server/waze_relay/middleware/app_check.js

38 lines
942 B
JavaScript

const { admin } = require('./firebase_auth');
/**
* Express middleware to verify Firebase App Check tokens.
*/
async function requireAppCheck(req, res, next) {
const isEnforced = process.env.ENFORCE_APP_CHECK === 'true';
const appCheckToken = req.header ? req.header('X-Firebase-AppCheck') : req.headers?.['x-firebase-appcheck'];
if (!appCheckToken) {
if (isEnforced) {
return res.status(403).json({
error: 'appCheckFailed',
message: 'Missing X-Firebase-AppCheck header'
});
} else {
return next();
}
}
try {
const appCheckClaims = await admin.appCheck().verifyToken(appCheckToken);
req.appCheck = appCheckClaims;
next();
} catch (err) {
if (isEnforced) {
return res.status(403).json({
error: 'appCheckFailed',
message: 'Invalid App Check token'
});
} else {
return next();
}
}
}
module.exports = { requireAppCheck };