From e05e94da96bfb3c43d8b9be4f5be114a8b2b4890 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 5 Aug 2025 15:25:40 +0800 Subject: [PATCH] bugfix --- json/uapi.json | 6 +-- json/upapp.json | 10 ++--- json/upapp1.json | 20 ---------- json/upappkey.json | 4 +- models/uapi.xlsx | Bin 17308 -> 17382 bytes models/uapiset.xlsx | Bin 16643 -> 16564 bytes uapi/appapi.py | 89 +++++++++++++------------------------------- uapi/init.py | 20 ++++++++-- 8 files changed, 50 insertions(+), 99 deletions(-) delete mode 100644 json/upapp1.json diff --git a/json/uapi.json b/json/uapi.json index 5ba992d..e28048f 100644 --- a/json/uapi.json +++ b/json/uapi.json @@ -27,11 +27,11 @@ "title":"API", "description":"API定义", - "sortby":"name", + "sortby":["apisetid", "name"], "browserfields":{ - "exclouded":["id"], + "exclouded":["id", "apisetid"], "alters":{} }, - "editexclouded":["id", "usid"] + "editexclouded":["id", "apisetid"] } } diff --git a/json/upapp.json b/json/upapp.json index 057d7b6..bb9d42e 100644 --- a/json/upapp.json +++ b/json/upapp.json @@ -4,17 +4,13 @@ "title":"上位系统", "description":"上位系统", "sortby":"name", + "logined_userorgid":"ownerid", "browserfields":{ - "exclouded":["id"], + "exclouded":[], "alters":{} }, - "editexclouded":["id"], + "editexclouded":[], "subtables":[ - { - "field":"upappid", - "subtable": "uapi", - "title": "API" - }, { "field":"upappid", "subtable": "upappkey", diff --git a/json/upapp1.json b/json/upapp1.json deleted file mode 100644 index a4b9083..0000000 --- a/json/upapp1.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "tblname":"upapp", - "alias":"upapp1", - "params":{ - "title":"上位系统", - "sortby":"name", - "noedit":true, - "browserfields":{ - "exclouded":["id"], - "alters":{} - }, - "subtables":[ - { - "field":"upappid", - "subtable":"upappkey", - "title":"应用密码" - } - ] - } -} diff --git a/json/upappkey.json b/json/upappkey.json index c57b081..3fb224f 100644 --- a/json/upappkey.json +++ b/json/upappkey.json @@ -2,9 +2,9 @@ "tblname":"upappkey", "params":{ "title":"上位系统密码", - "logined_userorgid":"ownerid", + "logined_useid":"ownerid", "description":"上位系统密码", - "confidential_fields":["apikey", "apipasswd" ], + "confidential_fields":["apikey", "secretkey", "apipasswd" ], "browserfields":{ "exclouded":["id", "ownerid"], "alters":{} diff --git a/models/uapi.xlsx b/models/uapi.xlsx index 03aa6ecf250a669992b14c7f58d4b9050e4fef1f..384ff11b89f5737d5eab147623ca848bb1201c93 100644 GIT binary patch delta 6112 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 ${today}$ - and b.enabled_date <= ${today}$""" - recs = await sor.sqlExe(sql, ns) - if len(recs) > 0: - r = recs[0] - return r - return r +def bearer(apikey): + return f'Bearer {apikey}' async def sync_users(request, upappid, userid): db = DBPools() @@ -53,31 +30,6 @@ async def sync_users(request, upappid, userid): async with db.sqlorContext(dbname) as sor: upapp = await get_upapp(sor, upappid) - -async def bearer_header(request, appid): - db = DBPools() - dbname = get_dbname() - async with db.sqlorContext(dbname) as sor: - u = await get_session_userinfo(request) - r = await get_apikeys(sor, appid, u.userorgid, u.userid) - if r is None: - return None - dearer = build_dearerdata(r.apikey) - return dearer - return None - -async def deerer_header(request, appid): - db = DBPools() - dbname = get_dbname() - async with db.sqlorContext(dbname) as sor: - u = await get_session_userinfo(request) - r = await get_apikeys(sor, appid, u.userorgid, u.userid) - if r is None: - return None - manis = build_deererdata(r.myid, r.apikey, r.secretkey) - return manis - return None - class UAPI: def __init__(self, request, env=DictObject()): self.te = MyTemplateEngine([], env=env) @@ -94,38 +46,47 @@ class UAPI: te = MyTemplateEngine([], env=self.env) return te.renders(tmplstr, ns) - async def get_uapis(self, upappid, uapiid, callerid, params={}): + async def get_uapis(self, upappid, apiname, callerid, params={}): self.env.update(params) db = DBPools() dbname = get_dbname() uapi = None auth_uapi = None async with db.sqlorContext(dbname) as sor: - recs = await sor.R('uapi', {'id':uapiid}) + upapps = await sor.R('upapp', {'id': upappid}) + if len(upapps) == 0: + e = Exceptions(f'{upappid=}, {apiname=}, {callerid=} upapp not found') + exception(f'{e=}\n{format_exc()}') + raise e + upapp = upapps[0] + apisets = await sor.R('uapiset', {'id': upapp.apisetid}) + if len(apisets) == 0: + e = Exceptions(f'{upappid=}, {apiname=}, {callerid=} apiset not found') + exception(f'{e=}\n{format_exc()}') + raise e + return None, None + apiset = apisets[0] + recs = await sor.R('uapi', {'name':apiname, 'apisetid': upapp.apisetid}) if len(recs)==0: return None, None uapi = recs[0] kinfo = await self.get_userapikey(sor, upappid, callerid) self.env.update(kinfo) - apisets = await sor.R('uapiset', {'id': uapi.usid}) - if len(apisets) == 0: - return None, None - apiset = apisets[0] auth_uapi = None - if apiset.auth_apiid: - uapis = await sor.R('uapi', {'id': apiset.auth_apiid}) + if apiset.auth_apiname: + uapis = await sor.R('uapi', {'name': apiset.auth_apiname, 'apisetid': upapp.apisetid}) if len(uapis) == 0: - e = Exceptions(f'{upappid=}, {uapiid=}, {callerid=} {apiset.auth_apiid=} auth_apiid not found') + e = Exceptions(f'{upappid=}, {uapiid=}, {callerid=} {apiset.auth_apinamed=} auth_api not found') exception(f'{e=}\n{format_exc()}') raise e auth_uapi = uapi[0] return auth_uapi, uapi return None, None - async def __call__(self, upappid, upapiid, callerid, params={}): + async def __call__(self, upappid, apiname, callerid, params={}): """ """ - auth_uapi, uapi = await self.get_uapis(upapiid, + auth_uapi, uapi = await self.get_uapis(upapiid, apiname, callerid, params=params) if uapi is None: return @@ -135,7 +96,7 @@ class UAPI: yield line async def request(self, upappid, upapiid, callerid, params={}): - auth_uapi, uapi = await self.get_uapis(upapiid, + auth_uapi, uapi = await self.get_uapis(upapiid, apiname, callerid, params=params) if auth_uapi: await self.do_auth(auth_uapi) diff --git a/uapi/init.py b/uapi/init.py index d81835f..4e047ef 100644 --- a/uapi/init.py +++ b/uapi/init.py @@ -1,9 +1,23 @@ from ahserver.serverenv import ServerEnv -from .appapi import UAPI, dearer_header, manis_header +from .appapi import UAPI, deerer, bearer def load_uapi(): g = ServerEnv() g.UAPI = UAPI - g.manis_header = manis_header - g.dearer_header = dearer_header + g.deerer = deerer + g.bearer = bearer + +# USAGE in dspy + +## uapi = UAPI(request, DictObject(**globals())) +## d = uapi.request(upappid, apiname. user, params_kw) +## use d in your following code + +# bearer usage +## in your header template +## {{bearer(apikey)}} + +# deerer usge +## in your header template +## {{deerer(myappid, apikey, secretkey)}}