'use client' import { useRouter, useSearchParams } from 'next/navigation' import type { FC } from 'react' import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' import { useGlobalPublicStore } from '@/context/global-public-context' import AppUnavailable from '@/app/components/base/app-unavailable' import NormalForm from './normalForm' import { AccessMode } from '@/models/access-control' import ExternalMemberSsoAuth from './components/external-member-sso-auth' import { useWebAppStore } from '@/context/web-app-context' import { webAppLogout } from '@/service/webapp-auth' const WebSSOForm: FC = () => { const { t } = useTranslation() const systemFeatures = useGlobalPublicStore(s => s.systemFeatures) const webAppAccessMode = useWebAppStore(s => s.webAppAccessMode) const searchParams = useSearchParams() const router = useRouter() const redirectUrl = searchParams.get('redirect_url') const getSigninUrl = useCallback(() => { const params = new URLSearchParams() params.append('redirect_url', redirectUrl || '') return `/webapp-signin?${params.toString()}` }, [redirectUrl]) const shareCode = useWebAppStore(s => s.shareCode) const backToHome = useCallback(async () => { await webAppLogout(shareCode!) const url = getSigninUrl() router.replace(url) }, [getSigninUrl, router, webAppLogout, shareCode]) if (!redirectUrl) { return
} if (!systemFeatures.webapp_auth.enabled) { return

{t('login.webapp.disabled')}

} if (webAppAccessMode && (webAppAccessMode === AccessMode.ORGANIZATION || webAppAccessMode === AccessMode.SPECIFIC_GROUPS_MEMBERS)) { return
} if (webAppAccessMode && webAppAccessMode === AccessMode.EXTERNAL_MEMBERS) return return
{t('share.login.backToHome')}
} export default React.memo(WebSSOForm)