From 989c70ed57a2cf5a13ed70204944a62690d36c17 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 23 Jan 2026 10:44:25 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A9(project)=20add=20FRONTEND=5FSILENT?= =?UTF-8?q?=5FLOGIN=5FENABLED=20feature=20flag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not every project requires silent login. This commit adds a new feature flag FRONTEND_SILENT_LOGIN_ENABLED to enable or disable silent login functionality. --- src/backend/core/api/viewsets.py | 1 + src/backend/core/tests/test_api_config.py | 1 + src/backend/impress/settings.py | 4 +++- .../apps/e2e/__tests__/app-impress/login.spec.ts | 6 ++++++ .../apps/e2e/__tests__/app-impress/utils-common.ts | 1 + .../apps/impress/src/core/config/api/useConfig.tsx | 1 + .../impress/src/features/auth/components/Auth.tsx | 14 ++++++++++++-- src/helm/env.d/dev/values.impress.yaml.gotmpl | 1 + src/helm/env.d/feature/values.impress.yaml.gotmpl | 1 + 9 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 7432004d..85bc59e3 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -2347,6 +2347,7 @@ class ConfigView(drf.views.APIView): "FRONTEND_CSS_URL", "FRONTEND_HOMEPAGE_FEATURE_ENABLED", "FRONTEND_JS_URL", + "FRONTEND_SILENT_LOGIN_ENABLED", "FRONTEND_THEME", "MEDIA_BASE_URL", "POSTHOG_KEY", diff --git a/src/backend/core/tests/test_api_config.py b/src/backend/core/tests/test_api_config.py index ac3a9b30..8c9780a6 100644 --- a/src/backend/core/tests/test_api_config.py +++ b/src/backend/core/tests/test_api_config.py @@ -53,6 +53,7 @@ def test_api_config(is_authenticated): "FRONTEND_CSS_URL": "http://testcss/", "FRONTEND_HOMEPAGE_FEATURE_ENABLED": True, "FRONTEND_JS_URL": "http://testjs/", + "FRONTEND_SILENT_LOGIN_ENABLED": False, "FRONTEND_THEME": "test-theme", "LANGUAGES": [ ["en-us", "English"], diff --git a/src/backend/impress/settings.py b/src/backend/impress/settings.py index 6b6c4239..ffee8d64 100755 --- a/src/backend/impress/settings.py +++ b/src/backend/impress/settings.py @@ -507,7 +507,9 @@ class Base(Configuration): FRONTEND_JS_URL = values.Value( None, environ_name="FRONTEND_JS_URL", environ_prefix=None ) - + FRONTEND_SILENT_LOGIN_ENABLED = values.BooleanValue( + default=False, environ_name="FRONTEND_SILENT_LOGIN_ENABLED", environ_prefix=None + ) THEME_CUSTOMIZATION_FILE_PATH = values.Value( os.path.join(BASE_DIR, "impress/configuration/theme/default.json"), environ_name="THEME_CUSTOMIZATION_FILE_PATH", diff --git a/src/frontend/apps/e2e/__tests__/app-impress/login.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/login.spec.ts index fc72e631..122861d6 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/login.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/login.spec.ts @@ -1,9 +1,15 @@ import { expect, test } from '@playwright/test'; +import { overrideConfig } from './utils-common'; + test.describe('Login: Not logged', () => { test.use({ storageState: { cookies: [], origins: [] } }); test('It tries silent login', async ({ page }) => { + await overrideConfig(page, { + FRONTEND_SILENT_LOGIN_ENABLED: true, + }); + const silentLoginRequest = page.waitForRequest((request) => request.url().includes('/api/v1.0/authenticate/?silent=true'), ); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts index 6854e0b4..7e7db0b8 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts @@ -14,6 +14,7 @@ export const CONFIG = { FRONTEND_CSS_URL: null, FRONTEND_JS_URL: null, FRONTEND_HOMEPAGE_FEATURE_ENABLED: true, + FRONTEND_SILENT_LOGIN_ENABLED: false, FRONTEND_THEME: null, MEDIA_BASE_URL: 'http://localhost:8083', LANGUAGES: [ diff --git a/src/frontend/apps/impress/src/core/config/api/useConfig.tsx b/src/frontend/apps/impress/src/core/config/api/useConfig.tsx index 6181ecab..1d5c0104 100644 --- a/src/frontend/apps/impress/src/core/config/api/useConfig.tsx +++ b/src/frontend/apps/impress/src/core/config/api/useConfig.tsx @@ -25,6 +25,7 @@ export interface ConfigResponse { FRONTEND_CSS_URL?: string; FRONTEND_HOMEPAGE_FEATURE_ENABLED?: boolean; FRONTEND_JS_URL?: string; + FRONTEND_SILENT_LOGIN_ENABLED?: boolean; FRONTEND_THEME?: Theme; LANGUAGES: [string, string][]; LANGUAGE_CODE: string; diff --git a/src/frontend/apps/impress/src/features/auth/components/Auth.tsx b/src/frontend/apps/impress/src/features/auth/components/Auth.tsx index a0fa349d..abeaf4ff 100644 --- a/src/frontend/apps/impress/src/features/auth/components/Auth.tsx +++ b/src/frontend/apps/impress/src/features/auth/components/Auth.tsx @@ -26,8 +26,18 @@ export const Auth = ({ children }: PropsWithChildren) => { const [isRedirecting, setIsRedirecting] = useState(false); const { data: config } = useConfig(); const shouldTrySilentLogin = useMemo( - () => !authenticated && !hasTrySilent() && !isLoading && !isRedirecting, - [authenticated, isLoading, isRedirecting], + () => + !authenticated && + !hasTrySilent() && + !isLoading && + !isRedirecting && + config?.FRONTEND_SILENT_LOGIN_ENABLED, + [ + authenticated, + isLoading, + isRedirecting, + config?.FRONTEND_SILENT_LOGIN_ENABLED, + ], ); const shouldTryLogin = !authenticated && !isLoading && !isRedirecting && !pathAllowed; diff --git a/src/helm/env.d/dev/values.impress.yaml.gotmpl b/src/helm/env.d/dev/values.impress.yaml.gotmpl index e6e3332b..7a78894f 100644 --- a/src/helm/env.d/dev/values.impress.yaml.gotmpl +++ b/src/helm/env.d/dev/values.impress.yaml.gotmpl @@ -29,6 +29,7 @@ backend: DJANGO_EMAIL_PORT: 1025 DJANGO_EMAIL_URL_APP: https://docs.127.0.0.1.nip.io DJANGO_EMAIL_USE_SSL: False + FRONTEND_SILENT_LOGIN_ENABLED: True LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR LOGGING_LEVEL_LOGGERS_ROOT: INFO LOGGING_LEVEL_LOGGERS_APP: INFO diff --git a/src/helm/env.d/feature/values.impress.yaml.gotmpl b/src/helm/env.d/feature/values.impress.yaml.gotmpl index 1489810d..15926792 100644 --- a/src/helm/env.d/feature/values.impress.yaml.gotmpl +++ b/src/helm/env.d/feature/values.impress.yaml.gotmpl @@ -30,6 +30,7 @@ backend: DJANGO_EMAIL_PORT: 1025 DJANGO_EMAIL_URL_APP: https://{{ .Values.feature }}-docs.{{ .Values.domain }} DJANGO_EMAIL_USE_SSL: False + FRONTEND_SILENT_LOGIN_ENABLED: True LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR LOGGING_LEVEL_LOGGERS_ROOT: INFO LOGGING_LEVEL_LOGGERS_APP: INFO