|
9 | 9 | */ |
10 | 10 | 'use strict'; |
11 | 11 | const crypto = require('crypto'); |
12 | | -const _ = require('lodash'); |
13 | 12 | const logger = require('../../utils/logger'); |
14 | 13 | const Project = require('../../models').Project; |
| 14 | +const Repository = require('../../models').Repository; |
15 | 15 | const dbHelper = require('../../utils/db-helper'); |
16 | 16 |
|
17 | 17 | module.exports = (provider) => async (req, res, next) => { |
18 | 18 | let isValid = false; |
19 | 19 | const params = req.body; |
20 | 20 | if (provider === 'github') { |
21 | | - const projectDetails = await dbHelper.scan(Project, { |
22 | | - repoUrls: { contains: params.repository.html_url } |
23 | | - }); |
24 | | - _.forEach(projectDetails, (projectDetail) => { |
| 21 | + const repositories = await dbHelper.queryRepositories(Repository, params.repository.html_url); |
| 22 | + for (const repository of repositories) { // eslint-disable-line |
| 23 | + const projectDetail = await dbHelper.queryOneProject(Project, repository.projectId); |
25 | 24 | const hash = crypto.createHmac('sha1', projectDetail.secretWebhookKey).update(req.rawBody).digest('hex'); |
26 | 25 | if (`sha1=${hash}` === req.header('X-Hub-Signature')) { |
27 | 26 | isValid = true; |
28 | 27 | } |
29 | | - }); |
| 28 | + } |
30 | 29 | } else if (provider === 'gitlab') { |
31 | | - const projectDetails = await dbHelper.scan(Project, { |
32 | | - repoUrls: { contains: params.project.web_url } |
33 | | - }); |
34 | | - _.forEach(projectDetails, (projectDetail) => { // eslint-disable-line lodash/prefer-filter |
| 30 | + const repositories = await dbHelper.queryRepositories(Repository, params.project.web_url); |
| 31 | + for (const repository of repositories) { // eslint-disable-line |
| 32 | + const projectDetail = await dbHelper.queryOneProject(Project, repository.projectId); |
35 | 33 | if (projectDetail.secretWebhookKey === req.header('X-Gitlab-Token')) { |
36 | 34 | isValid = true; |
37 | 35 | } |
38 | | - }); |
| 36 | + } |
39 | 37 | } else { |
40 | 38 | // unknown provider |
41 | 39 | return next(); |
|
0 commit comments