mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-27 07:54:19 +00:00
feat: implement instance ID management and integrate with OAuth token exchange
This commit is contained in:
@@ -145,13 +145,15 @@ class UserService:
|
|||||||
|
|
||||||
async def exchange_space_oauth_code(self, code: str) -> typing.Dict:
|
async def exchange_space_oauth_code(self, code: str) -> typing.Dict:
|
||||||
"""Exchange OAuth authorization code for tokens"""
|
"""Exchange OAuth authorization code for tokens"""
|
||||||
|
from langbot.pkg.utils import constants
|
||||||
|
|
||||||
space_config = self._get_space_config()
|
space_config = self._get_space_config()
|
||||||
space_url = space_config['url']
|
space_url = space_config['url']
|
||||||
|
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
async with session.post(
|
async with session.post(
|
||||||
f'{space_url}/api/v1/accounts/oauth/token',
|
f'{space_url}/api/v1/accounts/oauth/token',
|
||||||
json={'code': code},
|
json={'code': code, 'instance_id': constants.instance_id},
|
||||||
) as response:
|
) as response:
|
||||||
if response.status != 200:
|
if response.status != 200:
|
||||||
raise ValueError(f'Failed to exchange OAuth code: {await response.text()}')
|
raise ValueError(f'Failed to exchange OAuth code: {await response.text()}')
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ class Application:
|
|||||||
|
|
||||||
instance_config: config_mgr.ConfigManager = None
|
instance_config: config_mgr.ConfigManager = None
|
||||||
|
|
||||||
|
instance_id: config_mgr.ConfigManager = None # used to identify the instance
|
||||||
|
|
||||||
# ======= Metadata config manager =======
|
# ======= Metadata config manager =======
|
||||||
|
|
||||||
sensitive_meta: config_mgr.ConfigManager = None
|
sensitive_meta: config_mgr.ConfigManager = None
|
||||||
|
|||||||
@@ -2,8 +2,11 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
from langbot.pkg.utils import constants
|
||||||
import yaml
|
import yaml
|
||||||
import importlib.resources as resources
|
import importlib.resources as resources
|
||||||
|
import uuid
|
||||||
|
import time
|
||||||
|
|
||||||
from .. import stage, app
|
from .. import stage, app
|
||||||
from ..bootutils import config
|
from ..bootutils import config
|
||||||
@@ -142,6 +145,22 @@ class LoadConfigStage(stage.BootingStage):
|
|||||||
|
|
||||||
await ap.instance_config.dump_config()
|
await ap.instance_config.dump_config()
|
||||||
|
|
||||||
|
# load or generate instance id
|
||||||
|
ap.instance_id = await config.load_json_config(
|
||||||
|
'data/labels/instance_id.json',
|
||||||
|
template_data={
|
||||||
|
'instance_id': f'instance_{str(uuid.uuid4())}',
|
||||||
|
'instance_create_ts': int(time.time()),
|
||||||
|
},
|
||||||
|
completion=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
constants.instance_id = ap.instance_id.data['instance_id']
|
||||||
|
|
||||||
|
print(f'LangBot instance id: {constants.instance_id}')
|
||||||
|
|
||||||
|
await ap.instance_id.dump_config()
|
||||||
|
|
||||||
ap.sensitive_meta = await config.load_json_config(
|
ap.sensitive_meta = await config.load_json_config(
|
||||||
'data/metadata/sensitive-words.json',
|
'data/metadata/sensitive-words.json',
|
||||||
'metadata/sensitive-words.json',
|
'metadata/sensitive-words.json',
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ required_database_version = 16
|
|||||||
debug_mode = False
|
debug_mode = False
|
||||||
|
|
||||||
edition = 'community'
|
edition = 'community'
|
||||||
|
|
||||||
|
instance_id = ''
|
||||||
|
|||||||
Reference in New Issue
Block a user