- main
- manifest
- deps
- main
- Install
- Run
import { Router } from "@fastly/expressly";
const router = new Router();
router.get("(.*)", async (req, res) => {
const reqPermission = await getReqPermission(req);
const resp = await fetch(req.url, {
backend: "origin_0",
});
let array_a = reqPermission.split(':').filter(Boolean);
if (resp.headers.has('require-group')) {
let requireGroup = resp.headers.get('require-group');
let array_b = requireGroup.split(':').filter(Boolean);
let intersectionSet = array_a.filter(item => array_b.includes(item));
if (intersectionSet.length ==0) {
console.log("No intersection!");
res.sendStatus(403);
}else{
console.log(intersectionSet.toString());
res.send(resp);
}
}else{
console.log('No require-group header found in response');
res.send(resp);
}
});
router.listen();
function getReqPermission(req) {
const cookieVal = req.headers.get('Cookie');
if (!cookieVal) {
throw new Error('No cookie found');
}
const kvPairs = cookieVal.split(';');
const permissionKv = kvPairs.find((kv) => {
const index = kv.indexOf('=');
if (index === -1) {
return false;
}
const key = kv.substring(0, index).trim();
return key === 'permission';
});
if (!permissionKv) {
throw new Error('No permission found in cookie');
}
const index = permissionKv.indexOf('=');
const value = permissionKv.substring(index + 1);
return value;
}