Skip to content

Commit 1473437

Browse files
committed
Refactor checkViewPermission to fix limited & protected permission check bug and fix code style
1 parent e00daee commit 1473437

2 files changed

Lines changed: 31 additions & 23 deletions

File tree

lib/realtime.js

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
366382
var isConnectionBusy = false;
367383
var connectionSocketQueue = [];
368384
var 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
}

lib/response.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ function checkViewPermission(req, note) {
127127
else
128128
return true;
129129
} else if (note.permission == 'limited' || note.permission == 'protected') {
130-
if( !req.isAuthenticated() ) {
130+
if(!req.isAuthenticated())
131131
return false;
132-
}
133-
return true;
132+
else
133+
return true;
134134
} else {
135135
return true;
136136
}

0 commit comments

Comments
 (0)