Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 65b53bc

Browse files
committed
Handle multiple repo in db.
1 parent be622f0 commit 65b53bc

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

routes/middlewares/SecurityChecker.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
'use strict';
1111
const crypto = require('crypto');
12+
const _ = require('lodash');
1213
const logger = require('../../utils/logger');
1314
const Project = require('../../models').Project;
1415
const dbHelper = require('../../utils/db-helper');
@@ -17,17 +18,24 @@ module.exports = (provider) => async (req, res, next) => {
1718
let isValid = false;
1819
const params = req.body;
1920
if (provider === 'github') {
20-
const projectDetail = await dbHelper.scanOne(Project, {
21+
const projectDetails = await dbHelper.scan(Project, {
2122
repoUrl: params.repository.html_url
2223
});
23-
24-
const hash = crypto.createHmac('sha1', projectDetail.secretWebhookKey).update(req.rawBody).digest('hex');
25-
isValid = `sha1=${hash}` === req.header('X-Hub-Signature');
24+
_.forEach(projectDetails, (projectDetail) => {
25+
const hash = crypto.createHmac('sha1', projectDetail.secretWebhookKey).update(req.rawBody).digest('hex');
26+
if (`sha1=${hash}` === req.header('X-Hub-Signature')) {
27+
isValid = true;
28+
}
29+
});
2630
} else if (provider === 'gitlab') {
27-
const projectDetail = await dbHelper.scanOne(Project, {
31+
const projectDetails = await dbHelper.scan(Project, {
2832
repoUrl: params.project.web_url
2933
});
30-
isValid = projectDetail.secretWebhookKey === req.header('X-Gitlab-Token');
34+
_.forEach(projectDetails, (projectDetail) => { // eslint-disable-line lodash/prefer-filter
35+
if (projectDetail.secretWebhookKey === req.header('X-Gitlab-Token')) {
36+
isValid = true;
37+
}
38+
});
3139
} else {
3240
// unknown provider
3341
return next();

utils/db-helper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
async function scan(model, scanParams) {
1919
return await new Promise((resolve, reject) => {
20-
model.scan(scanParams).exec((err, result) => {
20+
model.scan(scanParams).consistent().all().exec((err, result) => {
2121
if (err) {
2222
reject(err);
2323
}
@@ -34,7 +34,7 @@ async function scan(model, scanParams) {
3434
*/
3535
async function scanOne(model, scanParams) {
3636
return await new Promise((resolve, reject) => {
37-
model.scan(scanParams).exec((err, result) => {
37+
model.scan(scanParams).consistent().all().exec((err, result) => {
3838
if (err) {
3939
reject(err);
4040
}

0 commit comments

Comments
 (0)