🚩(project) add FRONTEND_SILENT_LOGIN_ENABLED feature flag
Not every project requires silent login. This commit adds a new feature flag FRONTEND_SILENT_LOGIN_ENABLED to enable or disable silent login functionality.
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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"],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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'),
|
||||
);
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user