1. json/downapp.json: 添加更新和删除工具栏按钮,移除noedit限制 2. wwwroot/update_apikey.dspy: 查询并返回预填充的更新表单 3. wwwroot/do_update_apikey.dspy: 处理更新表单提交 4. wwwroot/delete_apikey.dspy: 删除API Key及关联应用 5. wwwroot/apikey_manage.ui: 独立API Key管理页面 6. scripts/load_path.py: 使用通配符%/dapi/%注册所有路径
53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
debug(f'{params_kw=}')
|
|
dbname = get_module_dbname('dapi')
|
|
db = DBPools()
|
|
userid = await get_user()
|
|
orgid = await get_userorgid()
|
|
if not userid:
|
|
return UiError(title='更新API Key', message='需要登录')
|
|
|
|
try:
|
|
async with db.sqlorContext(dbname) as sor:
|
|
# 验证权限
|
|
ns = {
|
|
"id": params_kw.id,
|
|
"orgid": orgid
|
|
}
|
|
sql = """select * from downapp
|
|
where id = ${id}$ and orgid = ${orgid}$"""
|
|
recs = await sor.sqlExe(sql, ns)
|
|
if not recs:
|
|
return UiError(title='更新API Key', message='API Key不存在或无权访问')
|
|
|
|
# 更新downapp
|
|
update_ns = {
|
|
"id": params_kw.id,
|
|
"name": params_kw.appname,
|
|
"description": params_kw.description,
|
|
"allowedips": params_kw.allowedips
|
|
}
|
|
await sor.U('downapp', update_ns)
|
|
|
|
# 如果需要重新生成apikey
|
|
if params_kw.get('regenerate_apikey') == 'true':
|
|
new_apikey = password_encode(uuid())
|
|
keys = await sor.R('downapikey', {"dappid": params_kw.id})
|
|
if keys:
|
|
key_data = {"id": keys[0].id, "apikey": new_apikey}
|
|
await sor.U('downapikey', key_data)
|
|
|
|
kw = {
|
|
"binds": [
|
|
{
|
|
"wid": "self",
|
|
"event": "dismissed",
|
|
"actiontype": "script",
|
|
"target": "app.sage_main_content",
|
|
"script": "this.render()"
|
|
}
|
|
]
|
|
}
|
|
return UiMessage(title="更新API Key", message="API Key更新成功", **kw)
|
|
except Exception as e:
|
|
return UiError(title='更新API Key', message=f'更新失败: {e}')
|