rbac/wwwroot/users/update_users.dspy
yumoqing 449a0415a5 fix: users CRUD — 三个修复
1. add_users.dspy: 新增用户时 created_at 默认设为当天日期
2. add/update: 清除 Tabular 发送的 _text 后缀字段
   (user_status_text, orgid_text 等不是真实列,会导致 sor.U/C 失败)
3. update_users.dspy: 密码为空时从 ns 中移除,避免覆盖为空白
2026-06-29 14:46:58 +08:00

79 lines
1.3 KiB
Plaintext

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"
}
}