|
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 |
| - repoUrl: 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 |
| - repoUrl: 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