@@ -87,24 +87,24 @@ function getPageLink (req, page) {
8787 */
8888function 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 */
428447async 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,
0 commit comments