feat: users CRUD 定制 api — 新增/编辑客制化逻辑
不修改生成文件,改为 json/users.json 指定 custom URLs: - new_data_url → /rbac/api/add_user.dspy - update_data_url → /rbac/api/update_user.dspy 客制化修复: 1. 新增用户: created_at 默认当天日期 2. 新增/编辑: 清除 Tabular 发送的 _text 后缀字段 3. 编辑: 密码为空时不覆盖原密码
This commit is contained in:
parent
9472c0995f
commit
ad601403cf
@ -2,6 +2,8 @@
|
||||
"tblname": "users",
|
||||
"title":"用户",
|
||||
"params": {
|
||||
"new_data_url": "{{entire_url('/rbac/api/add_user.dspy')}}",
|
||||
"update_data_url": "{{entire_url('/rbac/api/update_user.dspy')}}",
|
||||
"sortby":"username",
|
||||
"confidential_fields":["password"],
|
||||
"logined_userorgid":"orgid",
|
||||
|
||||
58
wwwroot/api/add_user.dspy
Normal file
58
wwwroot/api/add_user.dspy
Normal file
@ -0,0 +1,58 @@
|
||||
|
||||
ns = params_kw.copy()
|
||||
for k,v in ns.items():
|
||||
if v == 'NaN' or v == 'null':
|
||||
ns[k] = None
|
||||
# remove _text suffix fields sent by Tabular (not real DB columns)
|
||||
for k in list(ns.keys()):
|
||||
if k.endswith('_text'):
|
||||
ns.pop(k, None)
|
||||
id = params_kw.id
|
||||
if not id or len(id) > 32:
|
||||
id = uuid()
|
||||
ns['id'] = id
|
||||
|
||||
if params_kw.get('password'):
|
||||
ns['password'] = password_encode(params_kw.get('password'))
|
||||
|
||||
ns['created_at'] = curDateString()
|
||||
|
||||
userorgid = await get_userorgid()
|
||||
if not userorgid:
|
||||
return {
|
||||
"widgettype":"Error",
|
||||
"options":{
|
||||
"title":"Authorization Error",
|
||||
"timeout":3,
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"message":"Please login"
|
||||
}
|
||||
}
|
||||
ns['orgid'] = userorgid
|
||||
|
||||
db = DBPools()
|
||||
dbname = get_module_dbname('rbac')
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
r = await sor.C('users', ns.copy())
|
||||
return {
|
||||
"widgettype":"Message",
|
||||
"options":{
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"title":"Add Success",
|
||||
"timeout":3,
|
||||
"message":"ok"
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
"widgettype":"Error",
|
||||
"options":{
|
||||
"title":"Add Error",
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"timeout":3,
|
||||
"message":"failed"
|
||||
}
|
||||
}
|
||||
78
wwwroot/api/update_user.dspy
Normal file
78
wwwroot/api/update_user.dspy
Normal file
@ -0,0 +1,78 @@
|
||||
|
||||
ns = params_kw.copy()
|
||||
for k,v in ns.items():
|
||||
if v == 'NaN' or v == 'null':
|
||||
ns[k] = None
|
||||
# remove _text suffix fields sent by Tabular (not real DB columns)
|
||||
for k in list(ns.keys()):
|
||||
if k.endswith('_text'):
|
||||
ns.pop(k, None)
|
||||
|
||||
userorgid = await get_userorgid()
|
||||
if not userorgid:
|
||||
return {
|
||||
"widgettype":"Error",
|
||||
"options":{
|
||||
"title":"Authorization Error",
|
||||
"timeout":3,
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"message":"Please login"
|
||||
}
|
||||
}
|
||||
ns['orgid'] = userorgid
|
||||
|
||||
|
||||
if params_kw.get('password'):
|
||||
ns['password'] = password_encode(params_kw.get('password'))
|
||||
else:
|
||||
ns.pop('password', None)
|
||||
|
||||
|
||||
db = DBPools()
|
||||
dbname = get_module_dbname('rbac')
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
|
||||
ns1 = {
|
||||
|
||||
"orgid": userorgid,
|
||||
|
||||
|
||||
"id": params_kw.id
|
||||
}
|
||||
recs = await sor.R('users', ns1)
|
||||
if len(recs) < 1:
|
||||
return {
|
||||
"widgettype":"Error",
|
||||
"options":{
|
||||
"title":"Update Error",
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"timeout":3,
|
||||
"message":"Record no exist or with wrong ownership"
|
||||
}
|
||||
}
|
||||
|
||||
r = await sor.U('users', ns)
|
||||
debug('update success');
|
||||
return {
|
||||
"widgettype":"Message",
|
||||
"options":{
|
||||
"title":"Update Success",
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"timeout":3,
|
||||
"message":"ok"
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
"widgettype":"Error",
|
||||
"options":{
|
||||
"title":"Update Error",
|
||||
"cwidth":16,
|
||||
"cheight":9,
|
||||
"timeout":3,
|
||||
"message":"failed"
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user