Skip to content

Commit 5a001a8

Browse files
author
vikasrohit
authored
Merge pull request #249 from topcoder-platform/feature/PhaseEventPermissions
Limit draft phase update events to topcoder project members
2 parents fb45942 + dfc63f1 commit 5a001a8

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/events/busApi.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { EVENT, BUS_API_EVENT, PROJECT_STATUS, PROJECT_PHASE_STATUS, PROJECT_MEM
44
from '../constants';
55
import { createEvent } from '../services/busApi';
66
import models from '../models';
7+
import getTopcoderProjectMembers from '../util';
78

89
/**
910
* Map of project status and event name sent to bus api
@@ -364,6 +365,8 @@ module.exports = (app, logger) => {
364365
projectUrl: connectProjectUrl(projectId),
365366
userId: req.authUser.userId,
366367
initiatorUserId: req.authUser.userId,
368+
allowedUsers: created.status === PROJECT_PHASE_STATUS.DRAFT ?
369+
getTopcoderProjectMembers(project.members) : null,
367370
}, logger);
368371
return sendPlanReadyEventIfNeeded(req, project, created);
369372
}).catch(err => null); // eslint-disable-line no-unused-vars
@@ -388,6 +391,8 @@ module.exports = (app, logger) => {
388391
projectUrl: connectProjectUrl(projectId),
389392
userId: req.authUser.userId,
390393
initiatorUserId: req.authUser.userId,
394+
allowedUsers: deleted.status === PROJECT_PHASE_STATUS.DRAFT ?
395+
getTopcoderProjectMembers(project.members) : null,
391396
}, logger);
392397
}).catch(err => null); // eslint-disable-line no-unused-vars
393398
});
@@ -439,6 +444,8 @@ module.exports = (app, logger) => {
439444
projectName: project.name,
440445
userId: req.authUser.userId,
441446
initiatorUserId: req.authUser.userId,
447+
allowedUsers: updated.status === PROJECT_PHASE_STATUS.DRAFT ?
448+
getTopcoderProjectMembers(project.members) : null,
442449
}, logger));
443450
events.forEach((event) => { eventsMap[event] = true; });
444451
}
@@ -484,6 +491,8 @@ module.exports = (app, logger) => {
484491
projectUrl: connectProjectUrl(projectId),
485492
userId: req.authUser.userId,
486493
initiatorUserId: req.authUser.userId,
494+
allowedUsers: updated.status === PROJECT_PHASE_STATUS.DRAFT ?
495+
getTopcoderProjectMembers(project.members) : null,
487496
}, logger);
488497
}
489498
}).catch(err => null); // eslint-disable-line no-unused-vars

src/util.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import elasticsearch from 'elasticsearch';
1818
import Promise from 'bluebird';
1919
// import AWS from 'aws-sdk';
2020

21-
import { ADMIN_ROLES, TOKEN_SCOPES, EVENT } from './constants';
21+
import { ADMIN_ROLES, TOKEN_SCOPES, EVENT, PROJECT_MEMBER_ROLE } from './constants';
2222

2323
const exec = require('child_process').exec;
2424
const models = require('./models').default;
@@ -474,6 +474,13 @@ _.assignIn(util, {
474474
});
475475
});
476476
},
477+
478+
/**
479+
* Filter only members of topcoder team
480+
* @param {Array} members project members
481+
* @return {Array} tpcoder project members
482+
*/
483+
getTopcoderProjectMembers: members => _(members).filter(m => m.role !== PROJECT_MEMBER_ROLE.CUSTOMER),
477484
});
478485

479486
export default util;

0 commit comments

Comments
 (0)