@@ -272,7 +272,6 @@ plugins.register("/permissions/features", function(ob) {
272272plugins . register ( "/i/hook/save" , function ( ob ) {
273273 let paramsInstance = ob . params ;
274274
275-
276275 validateCreate ( ob . params , FEATURE_NAME , function ( params ) {
277276 let hookConfig = params . qstring . hook_config ;
278277 if ( ! hookConfig ) {
@@ -283,50 +282,57 @@ plugins.register("/i/hook/save", function(ob) {
283282 try {
284283 hookConfig = JSON . parse ( hookConfig ) ;
285284 hookConfig = sanitizeConfig ( hookConfig ) ;
286- if ( ! ( common . validateArgs ( hookConfig , CheckHookProperties ( hookConfig ) ) ) ) {
287- common . returnMessage ( params , 400 , 'Not enough args' ) ;
288- return true ;
289- }
285+ if ( hookConfig ) {
286+ // Null check for hookConfig
287+ if ( ! ( common . validateArgs ( hookConfig , CheckHookProperties ( hookConfig ) ) ) ) {
288+ common . returnMessage ( params , 400 , 'Not enough args' ) ;
289+ return true ;
290+ }
290291
291- if ( hookConfig . effects && ! validateEffects ( hookConfig . effects ) ) {
292- common . returnMessage ( params , 400 , 'Invalid configuration for effects' ) ;
293- return true ;
294- }
292+ if ( hookConfig . effects && ! validateEffects ( hookConfig . effects ) ) {
293+ common . returnMessage ( params , 400 , 'Invalid configuration for effects' ) ;
294+ return true ;
295+ }
295296
296- if ( hookConfig . _id ) {
297- const id = hookConfig . _id ;
298- delete hookConfig . _id ;
299- return common . db . collection ( "hooks" ) . findAndModify (
300- { _id : common . db . ObjectID ( id ) } ,
301- { } ,
302- { $set : hookConfig } ,
303- { new : true } ,
304- function ( err , result ) {
305- if ( ! err ) {
306- // Audit log: Hook updated
307- if ( result && result . value ) {
308- plugins . dispatch ( "/systemlogs" , {
309- params : params ,
310- action : "hook_updated" ,
311- data : {
312- updatedHookID : result . value . _id ,
313- updatedBy : params . member . _id ,
314- updatedHookName : result . value . name
315- }
316- } ) ;
297+ if ( hookConfig . _id ) {
298+ const id = hookConfig . _id ;
299+ delete hookConfig . _id ;
300+ return common . db . collection ( "hooks" ) . findAndModify (
301+ { _id : common . db . ObjectID ( id ) } ,
302+ { } ,
303+ { $set : hookConfig } ,
304+ { new : true } ,
305+ function ( err , result ) {
306+ if ( ! err ) {
307+ // Audit log: Hook updated
308+ if ( result && result . value ) {
309+ plugins . dispatch ( "/systemlogs" , {
310+ params : params ,
311+ action : "hook_updated" ,
312+ data : {
313+ updatedHookID : result . value . _id ,
314+ updatedBy : params . member . _id ,
315+ updatedHookName : result . value . name
316+ }
317+ } ) ;
318+ }
319+ else {
320+ common . returnMessage ( params , 500 , "No result found" ) ;
321+ }
322+ common . returnOutput ( params , result && result . value ) ;
317323 }
318324 else {
319- common . returnMessage ( params , 500 , "No result found " ) ;
325+ common . returnMessage ( params , 500 , "Failed to save an hook " ) ;
320326 }
321- common . returnOutput ( params , result && result . value ) ;
322327 }
323- else {
324- common . returnMessage ( params , 500 , "Failed to save an hook" ) ;
325- }
326- } ) ;
328+ ) ;
329+ }
330+
331+ }
332+ if ( hookConfig ) {
333+ hookConfig . createdBy = params . member . _id ; // Accessing property now with proper check
334+ hookConfig . created_at = new Date ( ) . getTime ( ) ;
327335 }
328- hookConfig . createdBy = params . member . _id ;
329- hookConfig . created_at = new Date ( ) . getTime ( ) ;
330336 return common . db . collection ( "hooks" ) . insert (
331337 hookConfig ,
332338 function ( err , result ) {
@@ -608,43 +614,54 @@ plugins.register("/i/hook/test", function(ob) {
608614 let hookConfig = params . qstring . hook_config ;
609615 if ( ! hookConfig ) {
610616 common . returnMessage ( params , 400 , 'Invalid hookConfig' ) ;
611- return true ;
617+ return ;
612618 }
613619
614620 try {
615621 hookConfig = JSON . parse ( hookConfig ) ;
622+ if ( ! hookConfig ) {
623+ common . returnMessage ( params , 400 , 'Parsed hookConfig is invalid' ) ;
624+ return ;
625+ }
616626 hookConfig = sanitizeConfig ( hookConfig ) ;
617627 const mockData = JSON . parse ( params . qstring . mock_data ) ;
618628
619629 if ( ! ( common . validateArgs ( hookConfig , CheckHookProperties ( hookConfig ) ) ) ) {
620630 common . returnMessage ( params , 403 , "hook config invalid" ) ;
631+ return ; // Add return to exit early
621632 }
622633
634+ // Null check for effects
623635 if ( hookConfig . effects && ! validateEffects ( hookConfig . effects ) ) {
624636 common . returnMessage ( params , 400 , 'Config invalid' ) ;
625- return true ;
637+ return ; // Add return to exit early
626638 }
627639
640+
628641 // trigger process
629642 log . d ( JSON . stringify ( hookConfig ) , "[hook test config]" ) ;
630643 const results = [ ] ;
631644
632645 // build mock data
633646 const trigger = hookConfig . trigger ;
647+ if ( ! trigger ) {
648+ common . returnMessage ( params , 400 , 'Trigger is missing' ) ;
649+ return ;
650+ }
634651 hookConfig . _id = null ;
652+
635653 log . d ( "[hook test mock data]" , mockData ) ;
636654 const obj = {
637655 is_mock : true ,
638656 params : mockData ,
639657 rule : hookConfig
640658 } ;
641-
642659 log . d ( "[hook test config data]" , obj ) ;
643660 const t = new Triggers [ trigger . type ] ( {
644661 rules : [ hookConfig ] ,
645662 } ) ;
646663
647- // out put trigger result
664+ // output trigger result
648665 const triggerResult = await t . process ( obj ) ;
649666 log . d ( "[hook trigger test result]" , triggerResult ) ;
650667 results . push ( JSON . parse ( JSON . stringify ( triggerResult ) ) ) ;
0 commit comments