mirror of
https://github.com/logto-io/logto.git
synced 2025-04-14 23:11:31 -05:00
feat(core,console,experience): remove sso dev guard (#5026)
* fix(console): fix lint allow isDev tag always exist * feat(core,console,experience): remove dev guard for SSO remove dev guard for SSO * fix(experience): polish comment polish comment
This commit is contained in:
parent
cdf5a22315
commit
b8f4c07dd0
11 changed files with 24 additions and 66 deletions
|
@ -8,7 +8,6 @@ import { useContext, useMemo, useState } from 'react';
|
|||
import Modal from 'react-modal';
|
||||
import useSWR from 'swr';
|
||||
|
||||
import { isDevFeaturesEnabled } from '@/consts/env';
|
||||
import { TenantsContext } from '@/contexts/TenantsProvider';
|
||||
import DynamicT from '@/ds-components/DynamicT';
|
||||
import ModalLayout from '@/ds-components/ModalLayout';
|
||||
|
@ -55,12 +54,7 @@ function CreateConnectorForm({ onClose, isOpen: isFormOpen, type }: Props) {
|
|||
}
|
||||
|
||||
const allGroups = getConnectorGroups<ConnectorFactoryResponse>(
|
||||
factories
|
||||
.filter(({ type: factoryType, isDemo }) => factoryType === type && !isDemo)
|
||||
// TODO: should remove the `isDevFeaturesEnabled` when Enterprise SSO is ready.
|
||||
// Hide the entrance of adding SAML social connectors, users should go to Enterprise SSO if they want to use SAML.
|
||||
// Should not remove the SAML factory from GET /connector-factories API, since that could break the existing SAML connectors.
|
||||
.filter(({ id }) => isDevFeaturesEnabled || id !== 'saml')
|
||||
factories.filter(({ type: factoryType, isDemo }) => factoryType === type && !isDemo)
|
||||
);
|
||||
|
||||
return allGroups
|
||||
|
|
|
@ -4,6 +4,6 @@ import { yes } from '@silverhand/essentials';
|
|||
export const isProduction = process.env.NODE_ENV === 'production';
|
||||
export const isCloud = yes(process.env.IS_CLOUD);
|
||||
export const adminEndpoint = process.env.ADMIN_ENDPOINT;
|
||||
// eslint-disable-next-line unicorn/prevent-abbreviations -- we love dev
|
||||
// eslint-disable-next-line unicorn/prevent-abbreviations, import/no-unused-modules -- we love dev
|
||||
export const isDevFeaturesEnabled =
|
||||
!isProduction || yes(process.env.DEV_FEATURES_ENABLED) || yes(process.env.INTEGRATION_TEST);
|
||||
|
|
|
@ -16,7 +16,7 @@ import Role from '@/assets/icons/role.svg';
|
|||
import SecurityLock from '@/assets/icons/security-lock.svg';
|
||||
import EnterpriseSso from '@/assets/icons/single-sign-on.svg';
|
||||
import Web from '@/assets/icons/web.svg';
|
||||
import { isCloud, isDevFeaturesEnabled } from '@/consts/env';
|
||||
import { isCloud } from '@/consts/env';
|
||||
import useUserPreferences from '@/hooks/use-user-preferences';
|
||||
|
||||
type SidebarItem = {
|
||||
|
@ -92,7 +92,6 @@ export const useSidebarMenuItems = (): {
|
|||
{
|
||||
Icon: EnterpriseSso,
|
||||
title: 'enterprise_sso',
|
||||
isHidden: !isDevFeaturesEnabled,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
@ -11,7 +11,7 @@ import {
|
|||
ApplicationDetailsTabs,
|
||||
EnterpriseSsoDetailsTabs,
|
||||
} from '@/consts';
|
||||
import { isCloud, isDevFeaturesEnabled } from '@/consts/env';
|
||||
import { isCloud } from '@/consts/env';
|
||||
import { TenantsContext } from '@/contexts/TenantsProvider';
|
||||
import OverlayScrollbar from '@/ds-components/OverlayScrollbar';
|
||||
import useUserPreferences from '@/hooks/use-user-preferences';
|
||||
|
@ -117,19 +117,17 @@ function ConsoleContent() {
|
|||
<Route path=":tab/guide/:factoryId" element={<Connectors />} />
|
||||
<Route path=":tab/:connectorId" element={<ConnectorDetails />} />
|
||||
</Route>
|
||||
{isDevFeaturesEnabled && (
|
||||
<Route path="enterprise-sso">
|
||||
<Route index element={<EnterpriseSsoConnectors />} />
|
||||
<Route path="create" element={<EnterpriseSsoConnectors />} />
|
||||
<Route path=":ssoConnectorId">
|
||||
<Route
|
||||
index
|
||||
element={<Navigate replace to={EnterpriseSsoDetailsTabs.Connection} />}
|
||||
/>
|
||||
<Route path=":tab" element={<EnterpriseSsoConnectorDetails />} />
|
||||
</Route>
|
||||
<Route path="enterprise-sso">
|
||||
<Route index element={<EnterpriseSsoConnectors />} />
|
||||
<Route path="create" element={<EnterpriseSsoConnectors />} />
|
||||
<Route path=":ssoConnectorId">
|
||||
<Route
|
||||
index
|
||||
element={<Navigate replace to={EnterpriseSsoDetailsTabs.Connection} />}
|
||||
/>
|
||||
<Route path=":tab" element={<EnterpriseSsoConnectorDetails />} />
|
||||
</Route>
|
||||
)}
|
||||
</Route>
|
||||
<Route path="webhooks">
|
||||
<Route index element={<Webhooks />} />
|
||||
<Route path="create" element={<Webhooks />} />
|
||||
|
|
|
@ -10,7 +10,6 @@ import { useOutletContext } from 'react-router-dom';
|
|||
import DetailsForm from '@/components/DetailsForm';
|
||||
import FormCard from '@/components/FormCard';
|
||||
import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal';
|
||||
import { isDevFeaturesEnabled } from '@/consts/env';
|
||||
import CodeEditor from '@/ds-components/CodeEditor';
|
||||
import FormField from '@/ds-components/FormField';
|
||||
import TextInput from '@/ds-components/TextInput';
|
||||
|
@ -153,11 +152,9 @@ function UserSettings() {
|
|||
}}
|
||||
/>
|
||||
</FormField>
|
||||
{isDevFeaturesEnabled && (
|
||||
<FormField title="user_details.field_sso_connectors">
|
||||
<UserSsoIdentities ssoIdentities={user.ssoIdentities ?? []} />
|
||||
</FormField>
|
||||
)}
|
||||
<FormField title="user_details.field_sso_connectors">
|
||||
<UserSsoIdentities ssoIdentities={user.ssoIdentities ?? []} />
|
||||
</FormField>
|
||||
<FormField title="user_details.mfa.field_name">
|
||||
<UserMfaVerifications userId={user.id} />
|
||||
</FormField>
|
||||
|
|
|
@ -65,11 +65,6 @@ export const createSignInExperienceLibrary = (
|
|||
};
|
||||
|
||||
const getActiveSsoConnectors = async (locale: string): Promise<SsoConnectorMetadata[]> => {
|
||||
// TODO: @simeng-li Remove the dev feature check once SSO is fully released
|
||||
if (!EnvSet.values.isDevFeaturesEnabled) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const ssoConnectors = await getAvailableSsoConnectors();
|
||||
|
||||
return ssoConnectors.map(({ providerName, id, branding }): SsoConnectorMetadata => {
|
||||
|
|
|
@ -3,7 +3,6 @@ import type Router from 'koa-router';
|
|||
import { type IRouterParamContext } from 'koa-router';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { EnvSet } from '#src/env-set/index.js';
|
||||
import RequestError from '#src/errors/RequestError/index.js';
|
||||
import { assignInteractionResults } from '#src/libraries/session.js';
|
||||
import { type WithLogContext } from '#src/middleware/koa-audit-log.js';
|
||||
|
@ -29,11 +28,6 @@ export default function singleSignOnRoutes<T extends IRouterParamContext>(
|
|||
router: Router<unknown, WithInteractionDetailsContext<WithLogContext<T>>>,
|
||||
tenant: TenantContext
|
||||
) {
|
||||
// FIXME: @simeng-li should remove this check after the feature is enabled in production
|
||||
if (!EnvSet.values.isDevFeaturesEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { provider, libraries, queries } = tenant;
|
||||
|
||||
const { ssoConnectors: ssoConnectorsLibrary } = libraries;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { type SocialUserInfo } from '@logto/connector-kit';
|
||||
import { type IdentifierPayload, type SignInExperience } from '@logto/schemas';
|
||||
|
||||
import { EnvSet } from '#src/env-set/index.js';
|
||||
import RequestError from '#src/errors/RequestError/index.js';
|
||||
import { type SsoConnectorLibrary } from '#src/libraries/sso-connector.js';
|
||||
import assertThat from '#src/utils/assert-that.js';
|
||||
|
@ -12,11 +11,6 @@ export const verifySsoOnlyEmailIdentifier = async (
|
|||
identifier: IdentifierPayload | SocialUserInfo,
|
||||
signInExperience: SignInExperience
|
||||
) => {
|
||||
// TODO: @simeng-li remove the dev features check when the SSO feature is released
|
||||
if (!EnvSet.values.isDevFeaturesEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!('email' in identifier) || !identifier.email) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import { generateStandardShortId } from '@logto/shared';
|
|||
import { conditional, assert } from '@silverhand/essentials';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { EnvSet } from '#src/env-set/index.js';
|
||||
import RequestError from '#src/errors/RequestError/index.js';
|
||||
import koaGuard from '#src/middleware/koa-guard.js';
|
||||
import koaPagination from '#src/middleware/koa-pagination.js';
|
||||
|
@ -29,11 +28,6 @@ import {
|
|||
} from './utils.js';
|
||||
|
||||
export default function singleSignOnRoutes<T extends AuthedRouter>(...args: RouterInitArgs<T>) {
|
||||
// FIXME: @simeng-li should remove this check after the feature is enabled in production
|
||||
if (!EnvSet.values.isDevFeaturesEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const [
|
||||
router,
|
||||
{
|
||||
|
|
|
@ -8,10 +8,7 @@ import LoadingLayerProvider from './Providers/LoadingLayerProvider';
|
|||
import PageContextProvider from './Providers/PageContextProvider';
|
||||
import SettingsProvider from './Providers/SettingsProvider';
|
||||
import SingleSignOnContextProvider from './Providers/SingleSignOnContextProvider';
|
||||
import {
|
||||
isDevFeaturesEnabled as isDevelopmentFeaturesEnabled,
|
||||
singleSignOnPath,
|
||||
} from './constants/env';
|
||||
import { singleSignOnPath } from './constants/env';
|
||||
import Callback from './pages/Callback';
|
||||
import Consent from './pages/Consent';
|
||||
import Continue from './pages/Continue';
|
||||
|
@ -113,13 +110,11 @@ const App = () => {
|
|||
<Route path="callback/:connectorId" element={<Callback />} />
|
||||
</Route>
|
||||
|
||||
{/* Single sign on */}
|
||||
{isDevelopmentFeaturesEnabled && (
|
||||
<Route path={singleSignOnPath} element={<LoadingLayerProvider />}>
|
||||
<Route path="email" element={<SingleSignOnEmail />} />
|
||||
<Route path="connectors" element={<SingleSignOnConnectors />} />
|
||||
</Route>
|
||||
)}
|
||||
{/* Single sign-on */}
|
||||
<Route path={singleSignOnPath} element={<LoadingLayerProvider />}>
|
||||
<Route path="email" element={<SingleSignOnEmail />} />
|
||||
<Route path="connectors" element={<SingleSignOnConnectors />} />
|
||||
</Route>
|
||||
|
||||
<Route path="*" element={<ErrorPage />} />
|
||||
</Route>
|
||||
|
|
|
@ -5,7 +5,6 @@ import { useContext, useMemo } from 'react';
|
|||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import PageContext from '@/Providers/PageContextProvider/PageContext';
|
||||
import { isDevFeaturesEnabled } from '@/constants/env';
|
||||
import { type VerificationCodeIdentifier } from '@/types';
|
||||
|
||||
export const useSieMethods = () => {
|
||||
|
@ -25,8 +24,7 @@ export const useSieMethods = () => {
|
|||
signInMode: experienceSettings?.signInMode,
|
||||
forgotPassword: experienceSettings?.forgotPassword,
|
||||
customContent: experienceSettings?.customContent,
|
||||
// TODO: remove the dev feature check once SSO is ready
|
||||
singleSignOnEnabled: isDevFeaturesEnabled && experienceSettings?.singleSignOnEnabled,
|
||||
singleSignOnEnabled: experienceSettings?.singleSignOnEnabled,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue