File tree 2 files changed +18
-4
lines changed
cloud9.ide.run-npm-module
2 files changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -22,13 +22,20 @@ var Workspace = module.exports = function(ide) {
22
22
} ;
23
23
24
24
this . getServerExclude = function ( user ) {
25
- return util . arrayToMap ( user . getPermissions ( ) . server_exclude . split ( "|" ) ) ;
25
+ // We assume `user` has been passed. Otherwise it is fine to throw.
26
+ if ( ! user . permissions ) {
27
+ console . error ( "Error: Couldn't retrieve permissions for user " , user ) ;
28
+ console . trace ( ) ;
29
+ }
30
+
31
+ var serverExclude = ( user . permissions && user . permissions . server_exclude ) || "" ;
32
+ return util . arrayToMap ( serverExclude . split ( "|" ) ) ;
26
33
} ;
27
34
28
35
this . execHook = function ( hook , user /* varargs */ ) {
29
36
var self = this ;
30
37
var args = Array . prototype . slice . call ( arguments , 1 ) ;
31
- var hook = hook . toLowerCase ( ) . trim ( ) ;
38
+ hook = hook . toLowerCase ( ) . trim ( ) ;
32
39
33
40
var server_exclude = this . getServerExclude ( user ) ;
34
41
Original file line number Diff line number Diff line change @@ -100,12 +100,19 @@ util.inherits(NpmRuntimePlugin, Plugin);
100
100
this . searchAndRunModuleHook = function ( message , user , cb ) {
101
101
if ( ! message . command || ! message . argv )
102
102
return cb ( null , false ) ;
103
+
104
+ if ( ! user || ! user . permissions ) {
105
+ console . error ( "Error: Couldn't retrieve permissions for user " , user ) ;
106
+ console . trace ( ) ;
107
+ }
103
108
104
- if ( user . permissions . fs != "rw" )
109
+ if ( user . permissions && user . permissions . fs != "rw" ) {
105
110
return cb ( "Permission denied" , false ) ;
111
+ }
106
112
107
113
// server_exclude is usually empty, resulting in an array with one element: an empty one, let's filter those:
108
- var server_exclude = ( user . permissions . server_exclude || "" ) . split ( "|" ) . filter ( function ( cmd ) { return ! ! cmd } ) ;
114
+ var server_excludeString = ( user . permissions && user . permissions . server_exclude ) || "" ;
115
+ var server_exclude = server_excludeString . split ( "|" ) . filter ( function ( cmd ) { return ! ! cmd ; } ) ;
109
116
server_exclude . forEach ( function ( command ) {
110
117
if ( message . command == command || message . argv . join ( " " ) . indexOf ( command ) > - 1 ) {
111
118
return cb ( "Permission denied" , false ) ;
You can’t perform that action at this time.
0 commit comments