@@ -49,7 +49,7 @@ router.get(
4949 accessibleBy ( req . authorization ) . ofType ( Survey . modelName ) ,
5050 { deletedAt : null }
5151 ]
52- } ) ;
52+ } ) . sort ( { createdAt : - 1 } ) ; // always sort most to least recent
5353
5454 // Successfully fetched surveys
5555 res . status ( 200 ) . json ( {
@@ -213,12 +213,14 @@ router.post(
213213 async ( req : AuthenticatedRequest , res : Response , next : NextFunction ) => {
214214 // Different permissions based on creation with or without referral
215215 // Check permission based on the action type based on query param `new`
216- let createActionType = ACTIONS . CASL . CREATE ;
217- if ( req . query . new === 'true' ) {
218- createActionType = ACTIONS . CUSTOM . CREATE_WITHOUT_REFERRAL ;
219- }
220- if ( ! req . authorization ?. can ( createActionType , SUBJECTS . SURVEY ) ) {
221- return res . status ( 403 ) . json ( { message : 'Forbidden' } ) ;
216+ if ( req . body . surveyCode === null ) {
217+ if ( ! req . authorization ?. can ( ACTIONS . CUSTOM . CREATE_WITHOUT_REFERRAL , SUBJECTS . SURVEY ) ) {
218+ return res . status ( 403 ) . json ( { message : 'Please provide a referral code to create a survey.' } ) ;
219+ }
220+ } else {
221+ if ( ! req . authorization ?. can ( ACTIONS . CASL . CREATE , SUBJECTS . SURVEY ) ) {
222+ return res . status ( 403 ) . json ( { message : 'Forbidden' } ) ;
223+ }
222224 }
223225 try {
224226 const surveyData : ISurvey = req . body ;
@@ -243,16 +245,11 @@ router.post(
243245 message : err . message
244246 } ) ;
245247 }
246- } else if ( req . query . new === 'true' ) {
247- // If `new` query parameter is true, generate new survey code and set parent to seed
248+ } else {
248249 surveyData . parentSurveyCode = SYSTEM_SURVEY_CODE ;
249250 surveyData . surveyCode = await generateUniqueSurveyCode ( ) ;
250- } else {
251- const err = errors . NO_SURVEY_CODE_PROVIDED ;
252- return res . status ( err . status ) . json ( {
253- message : err . message
254- } ) ;
255251 }
252+
256253 // Attempt to create the survey
257254 const result = await Survey . create ( surveyData ) ;
258255
0 commit comments