diff --git a/dapi/dapi.py b/dapi/dapi.py index fac1f6d..06c7c83 100644 --- a/dapi/dapi.py +++ b/dapi/dapi.py @@ -131,6 +131,21 @@ async def deerer_auth(sor, request): client_ip = request['client_ip'] return await deerer_user(sor, deer_data, client_ip, request) +async def get_user_dapp_apikey(dappid, userid): + """ + 获得用户在downapp的apikey + """ + sql = """b.* from downapp a, downapikey b where a.id=b.dappid and a.id=${dappid}$""" + env = ServerEnv() + async with get_sor_context(env, 'dapi') as sor: + recs = await sor.sqlExe(sql, {'dappid': dappid}) + if not recs: + debug(f'{dappid=}, {userid=} not exist is downapikey') + return None + apikey = env.password_decode(recs[0].apikey) + return apikey + return None + def deerer_header(appid, sk, apikey): tim = time.time() txt = f'{tim}:{apikey}' diff --git a/dapi/init.py b/dapi/init.py index 6f7ff50..57dbc41 100644 --- a/dapi/init.py +++ b/dapi/init.py @@ -1,4 +1,4 @@ -from dapi.dapi import sync_user, bearer_auth, deerer_auth, deerer_user, apikey_user, create_user_apikey, x_api_key_auth +from dapi.dapi import get_user_dapp_apikey, sync_user, bearer_auth, deerer_auth, deerer_user, apikey_user, create_user_apikey, x_api_key_auth from ahserver.serverenv import ServerEnv from rbac.check_perm import register_auth_method @@ -9,6 +9,7 @@ def load_dapi(): env.apikey_user = apikey_user env.create_user_apikey = create_user_apikey env.x_api_key_auth = x_api_key_auth + env.get_user_dapp_apikey = get_user_dapp_apikey register_auth_method('Bearer ', bearer_auth) register_auth_method('Deerer ', deerer_auth)