@@ -363,6 +363,22 @@ function interruptConnection(socket, note, user) {
363363 connectNextSocket ( ) ;
364364}
365365
366+ function checkViewPermission ( req , note ) {
367+ if ( note . permission == 'private' ) {
368+ if ( req . user && req . user . logged_in && req . user . id == note . owner )
369+ return true ;
370+ else
371+ return false ;
372+ } else if ( note . permission == 'limited' || note . permission == 'protected' ) {
373+ if ( req . user && req . user . logged_in )
374+ return true ;
375+ else
376+ return false ;
377+ } else {
378+ return true ;
379+ }
380+ }
381+
366382var isConnectionBusy = false ;
367383var connectionSocketQueue = [ ] ;
368384var isDisconnectBusy = false ;
@@ -373,14 +389,10 @@ function finishConnection(socket, note, user) {
373389 if ( ! socket || ! note || ! user ) {
374390 return interruptConnection ( socket , note , user ) ;
375391 }
376- //check view permission
377- if ( note . permission == 'limited' || note . permission == 'protected' || note . permission == 'private' ) {
378- if ( socket . request . user && socket . request . user . logged_in && socket . request . user . id == note . owner ) {
379- //na
380- } else {
381- interruptConnection ( socket , note , user ) ;
382- return failConnection ( 403 , 'connection forbidden' , socket ) ;
383- }
392+ // check view permission
393+ if ( ! checkViewPermission ( socket . request , note ) ) {
394+ interruptConnection ( socket , note , user ) ;
395+ return failConnection ( 403 , 'connection forbidden' , socket ) ;
384396 }
385397 // update user color to author color
386398 if ( note . authors [ user . userid ] ) {
@@ -789,18 +801,14 @@ function connection(socket) {
789801 for ( var i = 0 , l = note . socks . length ; i < l ; i ++ ) {
790802 var sock = note . socks [ i ] ;
791803 if ( typeof sock !== 'undefined' && sock ) {
792- //check view permission
793- if ( permission == 'limited' || permission == 'protected' || permission == 'private' ) {
794- if ( sock . request . user && sock . request . user . logged_in && sock . request . user . id == note . owner ) {
795- //na
796- } else {
797- sock . emit ( 'info' , {
798- code : 403
799- } ) ;
800- setTimeout ( function ( ) {
801- sock . disconnect ( true ) ;
802- } , 0 ) ;
803- }
804+ // check view permission
805+ if ( ! checkViewPermission ( sock . request , note ) ) {
806+ sock . emit ( 'info' , {
807+ code : 403
808+ } ) ;
809+ setTimeout ( function ( ) {
810+ sock . disconnect ( true ) ;
811+ } , 0 ) ;
804812 }
805813 }
806814 }
0 commit comments