🔧(backend) add backend toggle for silent login feature

Implement configuration option in backend to enable or disable silent login
functionality. Provides flexibility to control this authentication behavior
through server settings.

Requested by user self-hosting the project. Not all OIDC provider support
prompt=none param.
This commit is contained in:
lebaudantoine
2025-04-16 20:51:06 +02:00
committed by aleb_the_flash
parent 4060e891f2
commit e5eb1e9916
3 changed files with 20 additions and 2 deletions

View File

@@ -307,6 +307,9 @@ class Base(Configuration):
"silence_livekit_debug_logs": values.BooleanValue( "silence_livekit_debug_logs": values.BooleanValue(
False, environ_name="FRONTEND_SILENCE_LIVEKIT_DEBUG", environ_prefix=None False, environ_name="FRONTEND_SILENCE_LIVEKIT_DEBUG", environ_prefix=None
), ),
"is_silent_login_enabled": values.BooleanValue(
True, environ_name="FRONTEND_IS_SILENT_LOGING_ENABLED", environ_prefix=None
),
} }
# Mail # Mail

View File

@@ -12,6 +12,7 @@ export interface ApiConfig {
id: string id: string
} }
silence_livekit_debug_logs?: boolean silence_livekit_debug_logs?: boolean
is_silent_login_enabled?: boolean
recording?: { recording?: {
is_enabled?: boolean is_enabled?: boolean
available_modes?: RecordingMode[] available_modes?: RecordingMode[]

View File

@@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query'
import { keys } from '@/api/queryKeys' import { keys } from '@/api/queryKeys'
import { fetchUser } from './fetchUser' import { fetchUser } from './fetchUser'
import { type ApiUser } from './ApiUser' import { type ApiUser } from './ApiUser'
import { useEffect } from 'react' import { useEffect, useMemo } from 'react'
import { import {
startAnalyticsSession, startAnalyticsSession,
terminateAnalyticsSession, terminateAnalyticsSession,
@@ -12,6 +12,7 @@ import {
terminateSupportSession, terminateSupportSession,
} from '@/features/support/hooks/useSupport' } from '@/features/support/hooks/useSupport'
import { logoutUrl } from '../utils/logoutUrl' import { logoutUrl } from '../utils/logoutUrl'
import { useConfig } from '@/api/useConfig'
/** /**
* returns info about currently logged-in user * returns info about currently logged-in user
@@ -23,11 +24,24 @@ export const useUser = (
fetchUserOptions?: Parameters<typeof fetchUser>[0] fetchUserOptions?: Parameters<typeof fetchUser>[0]
} = {} } = {}
) => { ) => {
const { data, isLoading } = useConfig()
const options = useMemo(() => {
if (!data || data?.is_silent_login_enabled !== true) {
return {
...opts,
attemptSilent: false,
}
}
return opts.fetchUserOptions
}, [data, opts])
const query = useQuery({ const query = useQuery({
// eslint-disable-next-line @tanstack/query/exhaustive-deps // eslint-disable-next-line @tanstack/query/exhaustive-deps
queryKey: [keys.user], queryKey: [keys.user],
queryFn: () => fetchUser(opts.fetchUserOptions), queryFn: () => fetchUser(options),
staleTime: Infinity, staleTime: Infinity,
enabled: !isLoading,
}) })
useEffect(() => { useEffect(() => {