From 3cfc1fa13316f30229c36738b7f9576de30da6ec Mon Sep 17 00:00:00 2001 From: Abigail Hartman Date: Mon, 8 Jul 2024 10:48:57 -0700 Subject: [PATCH] Changes needed to support Azure Container Apps --- .dockerignore | 5 +++ WebApp.Dockerfile => Dockerfile | 0 WebApp.dockerignore | 5 --- app.py | 7 ++++- frontend/src/pages/chat/Chat.tsx | 13 +++++--- static/index.html | 2 +- tests/integration_tests/conftest.py | 47 ++--------------------------- 7 files changed, 24 insertions(+), 55 deletions(-) create mode 100644 .dockerignore rename WebApp.Dockerfile => Dockerfile (100%) delete mode 100644 WebApp.dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..ec59b088a6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.venv +.env +Dockerfile +.dockerignore +frontend/node_modules diff --git a/WebApp.Dockerfile b/Dockerfile similarity index 100% rename from WebApp.Dockerfile rename to Dockerfile diff --git a/WebApp.dockerignore b/WebApp.dockerignore deleted file mode 100644 index ab117a7a20..0000000000 --- a/WebApp.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -.venv -.env -WebApp.Dockerfile -WebApp.dockerignore -frontend/node_modules diff --git a/app.py b/app.py index aab516842f..5aecd5763d 100644 --- a/app.py +++ b/app.py @@ -46,10 +46,15 @@ def create_app(): @bp.route("/") async def index(): + identity_provider_enabled = "false" + if request.headers.get("X-Ms-Client-Principal"): + identity_provider_enabled = "true" + return await render_template( "index.html", title=app_settings.ui.title, - favicon=app_settings.ui.favicon + favicon=app_settings.ui.favicon, + identity_provider_enabled=identity_provider_enabled ) diff --git a/frontend/src/pages/chat/Chat.tsx b/frontend/src/pages/chat/Chat.tsx index 7d1fcd4490..012010b6a4 100644 --- a/frontend/src/pages/chat/Chat.tsx +++ b/frontend/src/pages/chat/Chat.tsx @@ -113,12 +113,17 @@ const Chat = () => { setShowAuthMessage(false) return } - const userInfoList = await getUserInfo() - if (userInfoList.length === 0 && window.location.hostname !== '127.0.0.1') { - setShowAuthMessage(true) - } else { + if (document.currentScript?.getAttribute("identityProviderEnabled") == "true"){ setShowAuthMessage(false) } + else { + const userInfoList = await getUserInfo() + if (userInfoList.length === 0 && window.location.hostname !== '127.0.0.1') { + setShowAuthMessage(true) + } else { + setShowAuthMessage(false) + } + } } let assistantMessage = {} as ChatMessage diff --git a/static/index.html b/static/index.html index 613c6a4f05..eaf44b0079 100644 --- a/static/index.html +++ b/static/index.html @@ -5,7 +5,7 @@ {{ title }} - + diff --git a/tests/integration_tests/conftest.py b/tests/integration_tests/conftest.py index 3ce2db7989..bd45657d0c 100644 --- a/tests/integration_tests/conftest.py +++ b/tests/integration_tests/conftest.py @@ -3,7 +3,6 @@ import pytest from azure.identity import AzureCliCredential from azure.keyvault.secrets import SecretClient -from pydantic.alias_generators import to_snake VAULT_NAME = os.environ.get("VAULT_NAME") @@ -18,52 +17,12 @@ def secret_client() -> SecretClient: @pytest.fixture(scope="module") -def dotenv_template_params_from_kv(secret_client: SecretClient) -> dict[str, str]: +def dotenv_template_params(secret_client: SecretClient) -> dict[str, str]: secrets_properties_list = secret_client.list_properties_of_secrets() secrets = {} for secret in secrets_properties_list: - secret_name = to_snake(secret.name).upper() - secrets[secret_name] = secret_client.get_secret(secret.name).value - - return secrets - - -@pytest.fixture(scope="module") -def dotenv_template_params_from_env() -> dict[str, str]: - def get_and_unset_variable(var_name): - # we need this function to ensure that the environment is clean before - # testing with generated dotenv files. - var_value = os.getenv(var_name) - os.environ[var_name] = "" - return var_value + secrets[secret.name] = secret_client.get_secret(secret.name).value - env_secrets = [ - "AZURE_COSMOSDB_ACCOUNT", - "AZURE_COSMOSDB_ACCOUNT_KEY", - "AZURE_COSMOSDB_CONVERSATIONS_CONTAINER", - "AZURE_COSMOSDB_DATABASE", - "AZURE_OPENAI_EMBEDDING_NAME" - "AZURE_OPENAI_ENDPOINT", - "AZURE_OPENAI_MODEL", - "AZURE_OPENAI_KEY", - "AZURE_SEARCH_INDEX", - "AZURE_SEARCH_KEY", - "AZURE_SEARCH_QUERY", - "AZURE_SEARCH_SERVICE", - "ELASTICSEARCH_EMBEDDING_MODEL_ID", - "ELASTICSEARCH_ENCODED_API_KEY", - "ELASTICSEARCH_ENDPOINT", - "ELASTICSEARCH_INDEX", - "ELASTICSEARCH_QUERY" - ] - - return {s: get_and_unset_variable(s) for s in env_secrets} - + return secrets -@pytest.fixture(scope="module") -def dotenv_template_params(request, use_keyvault_secrets): - if use_keyvault_secrets: - return request.getfixturevalue("dotenv_template_params_from_kv") - - return request.getfixturevalue("dotenv_template_params_from_env")