mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 13:47:19 +08:00
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
from integrations.github.github_service import SaaSGitHubService
|
|
from pydantic import SecretStr
|
|
from server.auth.auth_utils import user_verifier
|
|
|
|
from openhands.core.logger import openhands_logger as logger
|
|
from openhands.integrations.github.github_types import GitHubUser
|
|
|
|
|
|
def is_user_allowed(user_login: str):
|
|
if user_verifier.is_active() and not user_verifier.is_user_allowed(user_login):
|
|
logger.warning(f'GitHub user {user_login} not in allow list')
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
async def authenticate_github_user_id(auth_user_id: str) -> GitHubUser | None:
|
|
logger.debug('Checking auth status for GitHub user')
|
|
|
|
if not auth_user_id:
|
|
logger.warning('No GitHub User ID provided')
|
|
return None
|
|
|
|
gh_service = SaaSGitHubService(user_id=auth_user_id)
|
|
try:
|
|
user: GitHubUser = await gh_service.get_user()
|
|
if is_user_allowed(user.login):
|
|
return user
|
|
|
|
return None
|
|
except: # noqa: E722
|
|
logger.warning("GitHub user doens't have valid token")
|
|
return None
|
|
|
|
|
|
async def authenticate_github_user_token(access_token: str):
|
|
if not access_token:
|
|
logger.warning('No GitHub User ID provided')
|
|
return None
|
|
|
|
gh_service = SaaSGitHubService(token=SecretStr(access_token))
|
|
try:
|
|
user: GitHubUser = await gh_service.get_user()
|
|
if is_user_allowed(user.login):
|
|
return user
|
|
|
|
return None
|
|
except: # noqa: E722
|
|
logger.warning("GitHub user doens't have valid token")
|
|
return None
|