1515var async = require ( 'async' )
1616var _ = require ( 'lodash' )
1717var moment = require ( 'moment-timezone' )
18- var winston = require ( 'winston ' )
18+ var winston = require ( '../../../logger ' )
1919var permissions = require ( '../../../permissions' )
2020var emitter = require ( '../../../emitter' )
2121var xss = require ( 'xss' )
@@ -1828,12 +1828,23 @@ apiTickets.subscribe = function (req, res) {
18281828 if ( _ . isUndefined ( data . user ) || _ . isUndefined ( data . subscribe ) )
18291829 return res . status ( 400 ) . json ( { error : 'Invalid Post Data.' } )
18301830
1831+ if ( data . user . toString ( ) !== req . user . _id . toString ( ) ) return res . status ( 401 ) . json ( { error : 'Unauthorized!' } )
1832+
18311833 var ticketModel = require ( '../../../models/ticket' )
18321834 ticketModel . getTicketById ( ticketId , function ( err , ticket ) {
18331835 if ( err ) return res . status ( 400 ) . json ( { error : 'Invalid Ticket Id' } )
18341836
18351837 async . series (
18361838 [
1839+ function ( callback ) {
1840+ require ( '../../../models/user' ) . find ( { _id : data . user } , function ( err , user ) {
1841+ if ( err ) return callback ( err )
1842+
1843+ if ( ! user ) return callback ( new Error ( 'Unauthorized!' ) )
1844+
1845+ return callback ( )
1846+ } )
1847+ } ,
18371848 function ( callback ) {
18381849 if ( data . subscribe ) {
18391850 ticket . addSubscriber ( data . user , function ( ) {
@@ -1846,7 +1857,12 @@ apiTickets.subscribe = function (req, res) {
18461857 }
18471858 }
18481859 ] ,
1849- function ( ) {
1860+ function ( err ) {
1861+ if ( err ) {
1862+ winston . warn ( err )
1863+ return res . status ( 401 ) . json ( { error : 'Unauthorized!' } )
1864+ }
1865+
18501866 ticket . save ( function ( err , ticket ) {
18511867 if ( err ) return res . status ( 400 ) . json ( { error : err } )
18521868
0 commit comments