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

54 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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