🚩(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_CSS_URL",
|
||||||
"FRONTEND_HOMEPAGE_FEATURE_ENABLED",
|
"FRONTEND_HOMEPAGE_FEATURE_ENABLED",
|
||||||
"FRONTEND_JS_URL",
|
"FRONTEND_JS_URL",
|
||||||
|
"FRONTEND_SILENT_LOGIN_ENABLED",
|
||||||
"FRONTEND_THEME",
|
"FRONTEND_THEME",
|
||||||
"MEDIA_BASE_URL",
|
"MEDIA_BASE_URL",
|
||||||
"POSTHOG_KEY",
|
"POSTHOG_KEY",
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ def test_api_config(is_authenticated):
|
|||||||
"FRONTEND_CSS_URL": "http://testcss/",
|
"FRONTEND_CSS_URL": "http://testcss/",
|
||||||
"FRONTEND_HOMEPAGE_FEATURE_ENABLED": True,
|
"FRONTEND_HOMEPAGE_FEATURE_ENABLED": True,
|
||||||
"FRONTEND_JS_URL": "http://testjs/",
|
"FRONTEND_JS_URL": "http://testjs/",
|
||||||
|
"FRONTEND_SILENT_LOGIN_ENABLED": False,
|
||||||
"FRONTEND_THEME": "test-theme",
|
"FRONTEND_THEME": "test-theme",
|
||||||
"LANGUAGES": [
|
"LANGUAGES": [
|
||||||
["en-us", "English"],
|
["en-us", "English"],
|
||||||
|
|||||||
@@ -507,7 +507,9 @@ class Base(Configuration):
|
|||||||
FRONTEND_JS_URL = values.Value(
|
FRONTEND_JS_URL = values.Value(
|
||||||
None, environ_name="FRONTEND_JS_URL", environ_prefix=None
|
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(
|
THEME_CUSTOMIZATION_FILE_PATH = values.Value(
|
||||||
os.path.join(BASE_DIR, "impress/configuration/theme/default.json"),
|
os.path.join(BASE_DIR, "impress/configuration/theme/default.json"),
|
||||||
environ_name="THEME_CUSTOMIZATION_FILE_PATH",
|
environ_name="THEME_CUSTOMIZATION_FILE_PATH",
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
import { expect, test } from '@playwright/test';
|
import { expect, test } from '@playwright/test';
|
||||||
|
|
||||||
|
import { overrideConfig } from './utils-common';
|
||||||
|
|
||||||
test.describe('Login: Not logged', () => {
|
test.describe('Login: Not logged', () => {
|
||||||
test.use({ storageState: { cookies: [], origins: [] } });
|
test.use({ storageState: { cookies: [], origins: [] } });
|
||||||
|
|
||||||
test('It tries silent login', async ({ page }) => {
|
test('It tries silent login', async ({ page }) => {
|
||||||
|
await overrideConfig(page, {
|
||||||
|
FRONTEND_SILENT_LOGIN_ENABLED: true,
|
||||||
|
});
|
||||||
|
|
||||||
const silentLoginRequest = page.waitForRequest((request) =>
|
const silentLoginRequest = page.waitForRequest((request) =>
|
||||||
request.url().includes('/api/v1.0/authenticate/?silent=true'),
|
request.url().includes('/api/v1.0/authenticate/?silent=true'),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export const CONFIG = {
|
|||||||
FRONTEND_CSS_URL: null,
|
FRONTEND_CSS_URL: null,
|
||||||
FRONTEND_JS_URL: null,
|
FRONTEND_JS_URL: null,
|
||||||
FRONTEND_HOMEPAGE_FEATURE_ENABLED: true,
|
FRONTEND_HOMEPAGE_FEATURE_ENABLED: true,
|
||||||
|
FRONTEND_SILENT_LOGIN_ENABLED: false,
|
||||||
FRONTEND_THEME: null,
|
FRONTEND_THEME: null,
|
||||||
MEDIA_BASE_URL: 'http://localhost:8083',
|
MEDIA_BASE_URL: 'http://localhost:8083',
|
||||||
LANGUAGES: [
|
LANGUAGES: [
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ export interface ConfigResponse {
|
|||||||
FRONTEND_CSS_URL?: string;
|
FRONTEND_CSS_URL?: string;
|
||||||
FRONTEND_HOMEPAGE_FEATURE_ENABLED?: boolean;
|
FRONTEND_HOMEPAGE_FEATURE_ENABLED?: boolean;
|
||||||
FRONTEND_JS_URL?: string;
|
FRONTEND_JS_URL?: string;
|
||||||
|
FRONTEND_SILENT_LOGIN_ENABLED?: boolean;
|
||||||
FRONTEND_THEME?: Theme;
|
FRONTEND_THEME?: Theme;
|
||||||
LANGUAGES: [string, string][];
|
LANGUAGES: [string, string][];
|
||||||
LANGUAGE_CODE: string;
|
LANGUAGE_CODE: string;
|
||||||
|
|||||||
@@ -26,8 +26,18 @@ export const Auth = ({ children }: PropsWithChildren) => {
|
|||||||
const [isRedirecting, setIsRedirecting] = useState(false);
|
const [isRedirecting, setIsRedirecting] = useState(false);
|
||||||
const { data: config } = useConfig();
|
const { data: config } = useConfig();
|
||||||
const shouldTrySilentLogin = useMemo(
|
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 =
|
const shouldTryLogin =
|
||||||
!authenticated && !isLoading && !isRedirecting && !pathAllowed;
|
!authenticated && !isLoading && !isRedirecting && !pathAllowed;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ backend:
|
|||||||
DJANGO_EMAIL_PORT: 1025
|
DJANGO_EMAIL_PORT: 1025
|
||||||
DJANGO_EMAIL_URL_APP: https://docs.127.0.0.1.nip.io
|
DJANGO_EMAIL_URL_APP: https://docs.127.0.0.1.nip.io
|
||||||
DJANGO_EMAIL_USE_SSL: False
|
DJANGO_EMAIL_USE_SSL: False
|
||||||
|
FRONTEND_SILENT_LOGIN_ENABLED: True
|
||||||
LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR
|
LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR
|
||||||
LOGGING_LEVEL_LOGGERS_ROOT: INFO
|
LOGGING_LEVEL_LOGGERS_ROOT: INFO
|
||||||
LOGGING_LEVEL_LOGGERS_APP: INFO
|
LOGGING_LEVEL_LOGGERS_APP: INFO
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ backend:
|
|||||||
DJANGO_EMAIL_PORT: 1025
|
DJANGO_EMAIL_PORT: 1025
|
||||||
DJANGO_EMAIL_URL_APP: https://{{ .Values.feature }}-docs.{{ .Values.domain }}
|
DJANGO_EMAIL_URL_APP: https://{{ .Values.feature }}-docs.{{ .Values.domain }}
|
||||||
DJANGO_EMAIL_USE_SSL: False
|
DJANGO_EMAIL_USE_SSL: False
|
||||||
|
FRONTEND_SILENT_LOGIN_ENABLED: True
|
||||||
LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR
|
LOGGING_LEVEL_HANDLERS_CONSOLE: ERROR
|
||||||
LOGGING_LEVEL_LOGGERS_ROOT: INFO
|
LOGGING_LEVEL_LOGGERS_ROOT: INFO
|
||||||
LOGGING_LEVEL_LOGGERS_APP: INFO
|
LOGGING_LEVEL_LOGGERS_APP: INFO
|
||||||
|
|||||||
Reference in New Issue
Block a user