sdk/oapiSdk/lark_oapi/core/token/auth.py

54 lines
2.4 KiB
Python
Raw Permalink Normal View History

2025-08-19 10:20:23 +00:00
from lark_oapi.core.exception import NoAuthorizationException
from lark_oapi.core.model import *
from lark_oapi.core.utils import Strings
from .manager import TokenManager
def verify(config: Config, request: BaseRequest, option: RequestOption) -> None:
# 接口无需token
if len(request.token_types) == 0:
return
# 如开启token配置需手动传入token
if config.enable_set_token:
if Strings.is_not_empty(option.tenant_access_token) and AccessTokenType.TENANT in request.token_types:
request.token_types = {AccessTokenType.TENANT}
return
if Strings.is_not_empty(option.app_access_token) and AccessTokenType.APP in request.token_types:
request.token_types = {AccessTokenType.APP}
return
if Strings.is_not_empty(option.user_access_token) and AccessTokenType.USER in request.token_types:
request.token_types = {AccessTokenType.USER}
return
# 未开启token配置根据app_id/app_secret获取token
if Strings.is_empty(config.app_id) or Strings.is_empty(config.app_secret):
raise NoAuthorizationException("app_id or app_secret not found")
if AccessTokenType.TENANT in request.token_types:
tenant_access_token: str
if AppType.SELF == config.app_type:
tenant_access_token = TokenManager.get_self_tenant_token(config)
else:
if Strings.is_empty(option.tenant_key):
raise NoAuthorizationException("tenant_key not found")
tenant_access_token = TokenManager.get_isv_tenant_token(config, option.tenant_key, option.app_ticket)
option.tenant_access_token = tenant_access_token
request.token_types = {AccessTokenType.TENANT}
return
if AccessTokenType.APP in request.token_types:
app_access_token: str
if AppType.SELF == config.app_type:
app_access_token = TokenManager.get_self_app_token(config)
else:
app_access_token = TokenManager.get_isv_app_token(config, option.app_ticket)
option.app_access_token = app_access_token
request.token_types = {AccessTokenType.APP}
return
if AccessTokenType.APP in request.token_types:
if Strings.is_empty(option.user_access_token):
raise NoAuthorizationException("user_access_token not found")
raise NoAuthorizationException("need enable set token")