@@ -87,24 +87,24 @@ function getPageLink (req, page) {
87
87
*/
88
88
function setResHeaders ( req , res , result ) {
89
89
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 )
92
92
}
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 )
95
95
}
96
- res . set ( 'X-Page' , result . page )
96
+ res . set ( 'X-Page' , parseInt ( result . page , 10 ) )
97
97
res . set ( 'X-Per-Page' , result . perPage )
98
98
res . set ( 'X-Total' , result . total )
99
99
res . set ( 'X-Total-Pages' , totalPages )
100
100
// set Link header
101
101
if ( totalPages > 0 ) {
102
102
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"`
105
105
}
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"`
108
108
}
109
109
res . set ( 'Link' , link )
110
110
}
@@ -410,6 +410,25 @@ async function getChallengeResources (challengeId) {
410
410
return result
411
411
}
412
412
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
+
413
432
/**
414
433
* Get resource roles
415
434
* @returns {Promise<Array> } the challenge resources
@@ -427,7 +446,7 @@ async function getResourceRoles () {
427
446
*/
428
447
async function userHasFullAccess ( challengeId , userId ) {
429
448
const resourceRoles = await getResourceRoles ( )
430
- const rolesWithFullAccess = _ . map ( _ . filter ( resourceRoles , r => r . fullAccess ) , 'id' )
449
+ const rolesWithFullAccess = _ . map ( _ . filter ( resourceRoles , r => r . fullWriteAccess ) , 'id' )
431
450
const challengeResources = await getChallengeResources ( challengeId )
432
451
return _ . filter ( challengeResources , r => _ . toString ( r . memberId ) === _ . toString ( userId ) && _ . includes ( rolesWithFullAccess , r . roleId ) ) . length > 0
433
452
}
@@ -763,6 +782,7 @@ module.exports = {
763
782
downloadFromS3,
764
783
deleteFromS3,
765
784
getChallengeResources,
785
+ createResource,
766
786
getUserGroups,
767
787
ensureNoDuplicateOrNullElements,
768
788
postBusEvent,
0 commit comments