Skip to content

Commit 68b7c41

Browse files
author
James Cori
committed
Merge branch 'develop'
2 parents 6e2b6ba + 4c85539 commit 68b7c41

File tree

3 files changed

+53
-14
lines changed

3 files changed

+53
-14
lines changed

config/default.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ module.exports = {
5858
? process.env.COPILOT_RESOURCE_ROLE_IDS.split(',') : ['10ba038e-48da-487b-96e8-8d3b99b6d18b'],
5959
SUBMITTER_ROLE_ID: process.env.SUBMITTER_ROLE_ID || '732339e7-8e30-49d7-9198-cccf9451e221',
6060

61+
MANAGER_ROLE_ID: process.env.MANAGER_ROLE_ID || '0e9c6879-39e4-4eb6-b8df-92407890faf1',
62+
OBSERVER_ROLE_ID: process.env.OBSERVER_ROLE_ID || '2a4dc376-a31c-4d00-b173-13934d89e286',
63+
6164
// health check timeout in milliseconds
6265
HEALTH_CHECK_TIMEOUT: process.env.HEALTH_CHECK_TIMEOUT || 3000,
6366

src/common/helper.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,24 +87,24 @@ function getPageLink (req, page) {
8787
*/
8888
function setResHeaders (req, res, result) {
8989
const totalPages = Math.ceil(result.total / result.perPage)
90-
if (result.page > 1) {
91-
res.set('X-Prev-Page', result.page - 1)
90+
if (parseInt(result.page, 10) > 1) {
91+
res.set('X-Prev-Page', parseInt(result.page, 10) - 1)
9292
}
93-
if (result.page < totalPages) {
94-
res.set('X-Next-Page', result.page + 1)
93+
if (parseInt(result.page, 10) < totalPages) {
94+
res.set('X-Next-Page', parseInt(result.page, 10) + 1)
9595
}
96-
res.set('X-Page', result.page)
96+
res.set('X-Page', parseInt(result.page, 10))
9797
res.set('X-Per-Page', result.perPage)
9898
res.set('X-Total', result.total)
9999
res.set('X-Total-Pages', totalPages)
100100
// set Link header
101101
if (totalPages > 0) {
102102
let link = `<${getPageLink(req, 1)}>; rel="first", <${getPageLink(req, totalPages)}>; rel="last"`
103-
if (result.page > 1) {
104-
link += `, <${getPageLink(req, result.page - 1)}>; rel="prev"`
103+
if (parseInt(result.page, 10) > 1) {
104+
link += `, <${getPageLink(req, parseInt(result.page, 10) - 1)}>; rel="prev"`
105105
}
106-
if (result.page < totalPages) {
107-
link += `, <${getPageLink(req, result.page + 1)}>; rel="next"`
106+
if (parseInt(result.page, 10) < totalPages) {
107+
link += `, <${getPageLink(req, parseInt(result.page, 10) + 1)}>; rel="next"`
108108
}
109109
res.set('Link', link)
110110
}
@@ -410,6 +410,25 @@ async function getChallengeResources (challengeId) {
410410
return result
411411
}
412412

413+
/**
414+
* Create challenge resources
415+
* @param {String} challengeId the challenge id
416+
* @param {String} memberHandle the user's member handle
417+
* @param {String} roleId the resource role ID to assign
418+
*/
419+
async function createResource (challengeId, memberHandle, roleId) {
420+
const token = await getM2MToken()
421+
422+
const userObj = {
423+
challengeId,
424+
memberHandle,
425+
roleId
426+
}
427+
const url = `${config.RESOURCES_API_URL}`
428+
const res = await axios.post(url, userObj, { headers: { Authorization: `Bearer ${token}` } })
429+
return res || false
430+
}
431+
413432
/**
414433
* Get resource roles
415434
* @returns {Promise<Array>} the challenge resources
@@ -427,7 +446,7 @@ async function getResourceRoles () {
427446
*/
428447
async function userHasFullAccess (challengeId, userId) {
429448
const resourceRoles = await getResourceRoles()
430-
const rolesWithFullAccess = _.map(_.filter(resourceRoles, r => r.fullAccess), 'id')
449+
const rolesWithFullAccess = _.map(_.filter(resourceRoles, r => r.fullWriteAccess), 'id')
431450
const challengeResources = await getChallengeResources(challengeId)
432451
return _.filter(challengeResources, r => _.toString(r.memberId) === _.toString(userId) && _.includes(rolesWithFullAccess, r.roleId)).length > 0
433452
}
@@ -763,6 +782,7 @@ module.exports = {
763782
downloadFromS3,
764783
deleteFromS3,
765784
getChallengeResources,
785+
createResource,
766786
getUserGroups,
767787
ensureNoDuplicateOrNullElements,
768788
postBusEvent,

src/services/ChallengeService.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,14 @@ async function searchChallenges (currentUser, criteria) {
174174
// Parse and use metadata key
175175
if (!_.isUndefined(criteria[key])) {
176176
const metaKey = key.split('meta.')[1]
177-
boolQuery.push({ match_phrase: { [`metadata.${metaKey}`]: criteria[key] } })
177+
boolQuery.push({
178+
bool: {
179+
must: [
180+
{ match_phrase: { 'metadata.name': metaKey } },
181+
{ match_phrase: { 'metadata.value': _.toString(criteria[key]) } }
182+
]
183+
}
184+
})
178185
}
179186
}
180187
})
@@ -843,9 +850,6 @@ async function createChallenge (currentUser, challenge, userToken) {
843850
ret.type = type.name
844851
}
845852

846-
// post bus event
847-
await helper.postBusEvent(constants.Topics.ChallengeCreated, ret)
848-
849853
// Create in ES
850854
await esClient.create({
851855
index: config.get('ES.ES_INDEX'),
@@ -854,6 +858,18 @@ async function createChallenge (currentUser, challenge, userToken) {
854858
id: ret.id,
855859
body: ret
856860
})
861+
862+
// if created by a user, add user as a manager
863+
if (currentUser.handle) {
864+
logger.debug(`Adding user as manager ${currentUser.handle}`)
865+
await helper.createResource(ret.id, ret.createdBy, config.MANAGER_ROLE_ID)
866+
} else {
867+
logger.debug(`Not adding manager ${currentUser.sub} ${JSON.stringify(currentUser)}`)
868+
}
869+
870+
// post bus event
871+
await helper.postBusEvent(constants.Topics.ChallengeCreated, ret)
872+
857873
return ret
858874
}
859875

0 commit comments

Comments
 (0)