@@ -910,6 +910,24 @@ searchChallenges.schema = {
910
910
} )
911
911
. unknown ( true ) ,
912
912
} ;
913
+ /**
914
+ * Validate Challenge groups.
915
+ * @param {Object } groups the group of a challenge
916
+ */
917
+ async function validateGroups ( groups ) {
918
+ const promises = [ ] ;
919
+ _ . each ( groups , ( g ) => {
920
+ promises . push (
921
+ ( async ( ) => {
922
+ const group = await helper . getGroupById ( g ) ;
923
+ if ( ! group || group . status !== 'active' ) {
924
+ throw new errors . BadRequestError ( "The groups provided are invalid " + g ) ;
925
+ }
926
+ } ) ( )
927
+ ) ;
928
+ } ) ;
929
+ await Promise . all ( promises ) ;
930
+ }
913
931
914
932
/**
915
933
* Create challenge.
@@ -921,6 +939,12 @@ searchChallenges.schema = {
921
939
async function createChallenge ( currentUser , challenge , userToken ) {
922
940
await challengeHelper . validateCreateChallengeRequest ( currentUser , challenge ) ;
923
941
942
+ //Validate the groups if Valid or Not
943
+ if ( challenge . groups && challenge . groups . length > 0 )
944
+ {
945
+ await validateGroups ( challenge . groups ) ;
946
+ }
947
+
924
948
if ( challenge . legacy . selfService ) {
925
949
// if self-service, create a new project (what about if projectId is provided in the payload? confirm with business!)
926
950
if ( ! challenge . projectId ) {
@@ -1443,6 +1467,12 @@ async function updateChallenge(currentUser, challengeId, data) {
1443
1467
1444
1468
await validateChallengeUpdateRequest ( currentUser , challenge , data ) ;
1445
1469
1470
+ //Validate the groups if Valid or Not
1471
+ if ( data . groups && data . groups . length > 0 )
1472
+ {
1473
+ await validateGroups ( data . groups ) ;
1474
+ }
1475
+
1446
1476
let sendActivationEmail = false ;
1447
1477
let sendSubmittedEmail = false ;
1448
1478
let sendCompletedEmail = false ;
0 commit comments