@@ -1110,6 +1110,63 @@ async function update (currentUser, challengeId, data, userToken, isFull) {
1110
1110
return challenge
1111
1111
}
1112
1112
1113
+ /**
1114
+ * Remove unwanted properties from the challenge object
1115
+ * @param {Object } challenge the challenge object
1116
+ */
1117
+ function sanitizeChallenge ( challenge ) {
1118
+ const sanitized = _ . pick ( challenge , [
1119
+ 'typeId' ,
1120
+ 'name' ,
1121
+ 'description' ,
1122
+ 'privateDescription' ,
1123
+ 'descriptionFormat' ,
1124
+ 'timelineTemplateId' ,
1125
+ 'tags' ,
1126
+ 'projectId' ,
1127
+ 'legacyId' ,
1128
+ 'startDate' ,
1129
+ 'status' ,
1130
+ 'attachmentIds' ,
1131
+ 'groups'
1132
+ ] )
1133
+ if ( challenge . legacy ) {
1134
+ sanitized . legacy = _ . pick ( challenge . legacy , [
1135
+ 'track' ,
1136
+ 'reviewType' ,
1137
+ 'confidentialityType' ,
1138
+ 'forumId' ,
1139
+ 'directProjectId' ,
1140
+ 'screeningScorecardId' ,
1141
+ 'reviewScorecardId' ,
1142
+ 'informixModified'
1143
+ ] )
1144
+ }
1145
+ // metadata
1146
+ if ( challenge . metadata ) {
1147
+ sanitized . metadata = _ . map ( challenge . metadata , meta => _ . pick ( meta , [ 'name' , 'value' ] ) )
1148
+ }
1149
+ if ( challenge . phases ) {
1150
+ sanitized . phases = _ . map ( challenge . phases , phase => _ . pick ( phase , [ 'phaseId' , 'duration' ] ) )
1151
+ }
1152
+ if ( challenge . prizeSets ) {
1153
+ sanitized . prizeSets = _ . map ( challenge . prizeSets , prizeSet => ( {
1154
+ ..._ . pick ( prizeSet , [ 'type' , 'description' ] ) ,
1155
+ prizes : _ . map ( prizeSet . prizes , prize => _ . pick ( prize , [ 'description' , 'type' , 'value' ] ) )
1156
+ } ) )
1157
+ }
1158
+ if ( challenge . events ) {
1159
+ sanitized . events = _ . map ( challenge . events , event => _ . pick ( event , [ 'id' , 'name' , 'key' ] ) )
1160
+ }
1161
+ if ( challenge . winners ) {
1162
+ sanitized . winners = _ . map ( challenge . winners , winner => _ . pick ( winner , [ 'userId' , 'handle' , 'placement' ] ) )
1163
+ }
1164
+ if ( challenge . terms ) {
1165
+ sanitized . terms = _ . map ( challenge . terms , term => _ . pick ( term , [ 'id' , 'roleId' ] ) )
1166
+ }
1167
+ return sanitized
1168
+ }
1169
+
1113
1170
/**
1114
1171
* Fully update challenge.
1115
1172
* @param {Object } currentUser the user who perform operation
@@ -1119,7 +1176,7 @@ async function update (currentUser, challengeId, data, userToken, isFull) {
1119
1176
* @returns {Object } the updated challenge
1120
1177
*/
1121
1178
async function fullyUpdateChallenge ( currentUser , challengeId , data , userToken ) {
1122
- return update ( currentUser , challengeId , data , userToken , true )
1179
+ return update ( currentUser , challengeId , sanitizeChallenge ( data ) , userToken , true )
1123
1180
}
1124
1181
1125
1182
fullyUpdateChallenge . schema = {
@@ -1194,7 +1251,7 @@ fullyUpdateChallenge.schema = {
1194
1251
* @returns {Object } the updated challenge
1195
1252
*/
1196
1253
async function partiallyUpdateChallenge ( currentUser , challengeId , data , userToken ) {
1197
- return update ( currentUser , challengeId , data , userToken )
1254
+ return update ( currentUser , challengeId , sanitizeChallenge ( data ) , userToken )
1198
1255
}
1199
1256
1200
1257
partiallyUpdateChallenge . schema = {
0 commit comments