1818from Translate import translate as _
1919from util import helper
2020from util import SafeRe
21+ from util .Flag import flag
2122from Content .ContentManager import VerifyError , SignError
2223
2324
@@ -117,9 +118,8 @@ def hasPlugin(self, name):
117118
118119 # Has permission to run the command
119120 def hasCmdPermission (self , cmd ):
120- cmd = cmd [0 ].lower () + cmd [1 :]
121-
122- if cmd in self .admin_commands and "ADMIN" not in self .permissions :
121+ flags = flag .db .get (self .getCmdFuncName (cmd ), ())
122+ if "admin" in flags and "ADMIN" not in self .permissions :
123123 return False
124124 else :
125125 return True
@@ -205,6 +205,10 @@ def wrapper(*args, **kwargs):
205205 gevent .spawn (asyncErrorWatcher , func , * args , ** kwargs )
206206 return wrapper
207207
208+ def getCmdFuncName (self , cmd ):
209+ func_name = "action" + cmd [0 ].upper () + cmd [1 :]
210+ return func_name
211+
208212 # Handle incoming messages
209213 def handleRequest (self , req ):
210214
@@ -214,14 +218,14 @@ def handleRequest(self, req):
214218
215219 if cmd == "response" : # It's a response to a command
216220 return self .actionResponse (req ["to" ], req ["result" ])
217- elif not self .hasCmdPermission (cmd ): # Admin commands
218- return self .response (req ["id" ], {"error" : "You don't have permission to run %s" % cmd })
219221 else : # Normal command
220- func_name = "action" + cmd [ 0 ]. upper () + cmd [ 1 :]
222+ func_name = self . getCmdFuncName ( cmd )
221223 func = getattr (self , func_name , None )
222224 if not func : # Unknown command
223- self .response (req ["id" ], {"error" : "Unknown command: %s" % cmd })
224- return
225+ return self .response (req ["id" ], {"error" : "Unknown command: %s" % cmd })
226+
227+ if not self .hasCmdPermission (cmd ): # Admin commands
228+ return self .response (req ["id" ], {"error" : "You don't have permission to run %s" % cmd })
225229
226230 # Execute in parallel
227231 if cmd in self .async_commands :
0 commit comments