Skip to content
Prev Previous commit
Next Next commit
more strict check to tag_POST; support DISALLOW in apijson_put
  • Loading branch information
zhangchunlin committed May 7, 2019
commit 8eeafbbbf35123e81eaa0c037d5e26f0fddb9ea4
15 changes: 12 additions & 3 deletions uliweb_apijson/apijson/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,8 @@ def _post_one(self,key,tag):
if not request_tag_config:
return json({"code":400,"msg":"tag '%s' not found"%(tag)})
tag_POST = request_tag_config.get("POST",{})
if not tag_POST:
return json({"code":400,"msg":"tag '%s' not support apijson_post"%(tag)})
ADD = tag_POST.get("ADD")
if ADD:
ADD_role = ADD.get("@role")
Expand Down Expand Up @@ -501,9 +503,9 @@ def _put_one(self,key,tag):
return json({"code":400,"msg":"cannot find record id '%s'"%(id_)})

permission_check_ok = False
PUT = model_setting.get("PUT")
if PUT:
roles = PUT.get("roles")
model_PUT = model_setting.get("PUT")
if model_PUT:
roles = model_PUT.get("roles")
if params_role:
if not params_role in roles:
return json({"code":400,"msg":"'%s' not accessible by role '%s'"%(modelname,params_role)})
Expand All @@ -529,6 +531,13 @@ def _put_one(self,key,tag):
if not permission_check_ok:
return json({"code":400,"msg":"no permission"})

DISALLOW = tag_PUT.get("DISALLOW")
if DISALLOW:
for field in DISALLOW:
if field in params:
log.error("request '%s' disallow '%s'"%(tag,field))
return json({"code":400,"msg":"request '%s' disallow '%s'"%(tag,field)})

kwargs = {}
for k in params:
if k=="id":
Expand Down