@ikas/admin-api-client
Version:
ikas public node api client for store apps and private apps
35 lines • 1.34 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateIkasWebhookMiddleware = void 0;
exports.validateIkasWebhookSignature = validateIkasWebhookSignature;
exports.getParsedIkasWebhookData = getParsedIkasWebhookData;
const crypto_1 = __importDefault(require("crypto"));
const validateIkasWebhookMiddleware = (clientSecret) => async (req, res, next) => {
const data = req.body;
if (validateIkasWebhookSignature(data, clientSecret)) {
await next();
}
else {
res.status(401).send({ message: 'invalid signature', statusCode: 401 });
}
};
exports.validateIkasWebhookMiddleware = validateIkasWebhookMiddleware;
function validateIkasWebhookSignature(data, clientSecret) {
const generatedHash = crypto_1.default
.createHmac('sha256', clientSecret || '')
.update(data.data, 'utf8')
.digest('hex');
return generatedHash === data.signature;
}
function getParsedIkasWebhookData(data, clientSecret) {
if (validateIkasWebhookSignature(data, clientSecret)) {
return JSON.parse(data.data);
}
else {
throw new Error('invalid signature');
}
}
//# sourceMappingURL=webhook-helpers.js.map
;