mirror of
https://github.com/logto-io/logto.git
synced 2025-03-31 22:51:25 -05:00
chore(console,core): add/replace SSO connector logo resources (#4963)
This commit is contained in:
parent
0d636d5607
commit
ac099b1e64
23 changed files with 143 additions and 68 deletions
|
@ -8,12 +8,6 @@
|
|||
padding: _.unit(6) _.unit(8);
|
||||
gap: _.unit(6);
|
||||
|
||||
.icon {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.copyId {
|
||||
flex: 1;
|
||||
}
|
||||
|
@ -56,3 +50,9 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
.container {
|
||||
background-color: var(--color-hover);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.logo {
|
||||
flex-shrink: 0;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
import { Theme } from '@logto/schemas';
|
||||
import type { SsoConnectorWithProviderConfig } from '@logto/schemas';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback';
|
||||
import useTheme from '@/hooks/use-theme';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
className?: string;
|
||||
containerClassName?: string;
|
||||
data: Pick<SsoConnectorWithProviderConfig, 'providerLogo' | 'providerLogoDark' | 'branding'>;
|
||||
};
|
||||
|
||||
const pickLogoForCurrentTheme = (
|
||||
isDarkMode: boolean,
|
||||
{ logo, logoDark }: { logo: string; logoDark: string },
|
||||
branding: SsoConnectorWithProviderConfig['branding']
|
||||
): string => {
|
||||
if (isDarkMode) {
|
||||
return branding.darkLogo ?? logoDark;
|
||||
}
|
||||
return branding.logo ?? logo;
|
||||
};
|
||||
|
||||
function SsoConnectorLogo({ className, containerClassName, data }: Props) {
|
||||
const theme = useTheme();
|
||||
const isDarkMode = theme === Theme.Dark;
|
||||
const { providerLogo: logo, providerLogoDark: logoDark, branding } = data;
|
||||
|
||||
return (
|
||||
<ImageWithErrorFallback
|
||||
containerClassName={classNames(styles.container, containerClassName)}
|
||||
className={classNames(styles.logo, className)}
|
||||
alt="logo"
|
||||
src={pickLogoForCurrentTheme(isDarkMode, { logo, logoDark }, branding)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default SsoConnectorLogo;
|
|
@ -1,7 +1,8 @@
|
|||
import { type SsoConnectorFactoryDetail } from '@logto/schemas';
|
||||
import { type SsoConnectorFactoryDetail, Theme } from '@logto/schemas';
|
||||
import classNames from 'classnames';
|
||||
|
||||
import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback';
|
||||
import useTheme from '@/hooks/use-theme';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
|
@ -9,14 +10,15 @@ type Props = {
|
|||
data: SsoConnectorFactoryDetail;
|
||||
};
|
||||
|
||||
function SsoConnectorRadio({ data: { providerName, logo, description } }: Props) {
|
||||
function SsoConnectorRadio({ data: { providerName, logo, logoDark, description } }: Props) {
|
||||
const theme = useTheme();
|
||||
return (
|
||||
<div className={styles.ssoConnector}>
|
||||
<ImageWithErrorFallback
|
||||
containerClassName={styles.container}
|
||||
className={styles.logo}
|
||||
alt="logo"
|
||||
src={logo}
|
||||
src={theme === Theme.Light ? logo : logoDark}
|
||||
/>
|
||||
<div className={styles.content}>
|
||||
<div className={classNames(styles.name)}>
|
||||
|
|
|
@ -7,18 +7,18 @@
|
|||
.container {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
background-color: var(--color-hover);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
border-radius: _.unit(2);
|
||||
|
||||
> img {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
flex-shrink: 0;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.domains {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { withAppInsights } from '@logto/app-insights/react';
|
||||
import { type SsoConnectorWithProviderConfig, Theme, SsoProviderName } from '@logto/schemas';
|
||||
import { type SsoConnectorWithProviderConfig, SsoProviderName } from '@logto/schemas';
|
||||
import { conditional } from '@silverhand/essentials';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
@ -13,16 +13,15 @@ import ItemPreview from '@/components/ItemPreview';
|
|||
import ListPage from '@/components/ListPage';
|
||||
import { defaultPageSize } from '@/consts';
|
||||
import Button from '@/ds-components/Button';
|
||||
import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback';
|
||||
import TablePlaceholder from '@/ds-components/Table/TablePlaceholder';
|
||||
import Tag from '@/ds-components/Tag';
|
||||
import type { RequestError } from '@/hooks/use-api';
|
||||
import useSearchParametersWatcher from '@/hooks/use-search-parameters-watcher';
|
||||
import useTenantPathname from '@/hooks/use-tenant-pathname';
|
||||
import useTheme from '@/hooks/use-theme';
|
||||
import { buildUrl } from '@/utils/url';
|
||||
|
||||
import Guide from './Guide';
|
||||
import SsoConnectorLogo from './SsoConnectorLogo';
|
||||
import SsoCreationModal from './SsoCreationModal';
|
||||
import * as styles from './index.module.scss';
|
||||
import { type SsoConnectorWithProviderConfigWithGeneric } from './types';
|
||||
|
@ -34,8 +33,6 @@ const buildDetailsPathname = (id: string) => `${enterpriseSsoPathname}/${id}`;
|
|||
const buildGuidePathname = (id: string) => `${buildDetailsPathname(id)}/guide`;
|
||||
|
||||
function EnterpriseSsoConnectors() {
|
||||
const theme = useTheme();
|
||||
|
||||
const { pathname } = useLocation();
|
||||
const { navigate } = useTenantPathname();
|
||||
const { ssoConnectorId: id } = useParams();
|
||||
|
@ -91,19 +88,14 @@ function EnterpriseSsoConnectors() {
|
|||
title: t('enterprise_sso.col_connector_name'),
|
||||
dataIndex: 'name',
|
||||
colSpan: 256,
|
||||
render: ({ id, connectorName, providerLogo, branding }) => (
|
||||
render: ({ id, connectorName, ...rest }) => (
|
||||
<ItemPreview
|
||||
title={connectorName}
|
||||
icon={
|
||||
<ImageWithErrorFallback
|
||||
<SsoConnectorLogo
|
||||
className={styles.logo}
|
||||
containerClassName={styles.container}
|
||||
alt="logo"
|
||||
src={
|
||||
(theme === Theme.Dark && branding.darkLogo
|
||||
? branding.darkLogo
|
||||
: branding.logo) ?? providerLogo
|
||||
}
|
||||
data={rest}
|
||||
/>
|
||||
}
|
||||
to={buildDetailsPathname(id)}
|
||||
|
|
|
@ -10,16 +10,15 @@
|
|||
.container {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 12px;
|
||||
background-color: var(--color-hover);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
border-radius: _.unit(3);
|
||||
|
||||
> img {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
flex-shrink: 0;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { withAppInsights } from '@logto/app-insights/react';
|
||||
import { Theme, SsoProviderName } from '@logto/schemas';
|
||||
import { SsoProviderName } from '@logto/schemas';
|
||||
import { pick } from '@silverhand/essentials';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { toast } from 'react-hot-toast';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
@ -16,13 +17,13 @@ import PageMeta from '@/components/PageMeta';
|
|||
import { EnterpriseSsoDetailsTabs } from '@/consts';
|
||||
import ConfirmModal from '@/ds-components/ConfirmModal';
|
||||
import DynamicT from '@/ds-components/DynamicT';
|
||||
import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback';
|
||||
import TabNav, { TabNavItem } from '@/ds-components/TabNav';
|
||||
import type { RequestError } from '@/hooks/use-api';
|
||||
import useApi from '@/hooks/use-api';
|
||||
import useTenantPathname from '@/hooks/use-tenant-pathname';
|
||||
import useTheme from '@/hooks/use-theme';
|
||||
|
||||
import SsoConnectorLogo from '../EnterpriseSso/SsoConnectorLogo';
|
||||
import {
|
||||
type SsoConnectorWithProviderConfigWithGeneric,
|
||||
type ParsedSsoIdentityProviderConfig,
|
||||
|
@ -119,15 +120,10 @@ function EnterpriseSsoConnectorDetails<T extends SsoProviderName>() {
|
|||
<>
|
||||
<DetailsPageHeader
|
||||
icon={
|
||||
<ImageWithErrorFallback
|
||||
<SsoConnectorLogo
|
||||
className={styles.logo}
|
||||
containerClassName={styles.container}
|
||||
alt="logo"
|
||||
src={
|
||||
(theme === Theme.Dark && ssoConnector.branding.darkLogo
|
||||
? ssoConnector.branding.darkLogo
|
||||
: ssoConnector.branding.logo) ?? ssoConnector.providerLogo
|
||||
}
|
||||
data={pick(ssoConnector, 'providerLogo', 'providerLogoDark', 'branding')}
|
||||
/>
|
||||
}
|
||||
title={ssoConnector.connectorName}
|
||||
|
|
|
@ -4,9 +4,10 @@ import { useTranslation } from 'react-i18next';
|
|||
import useSWR from 'swr';
|
||||
|
||||
import CopyToClipboard from '@/ds-components/CopyToClipboard';
|
||||
import ImageWithErrorFallback from '@/ds-components/ImageWithErrorFallback';
|
||||
import Table from '@/ds-components/Table';
|
||||
import type { RequestError } from '@/hooks/use-api';
|
||||
import useTheme from '@/hooks/use-theme';
|
||||
import SsoConnectorLogo from '@/pages/EnterpriseSso/SsoConnectorLogo';
|
||||
|
||||
import * as styles from '../UserSocialIdentities/index.module.scss';
|
||||
|
||||
|
@ -15,13 +16,16 @@ type Props = {
|
|||
};
|
||||
|
||||
type DisplayConnector = {
|
||||
logo: SsoConnectorWithProviderConfig['providerLogo'];
|
||||
providerLogo: SsoConnectorWithProviderConfig['providerLogo'];
|
||||
providerLogoDark: SsoConnectorWithProviderConfig['providerLogoDark'];
|
||||
branding: SsoConnectorWithProviderConfig['branding'];
|
||||
name: SsoConnectorWithProviderConfig['connectorName'];
|
||||
userIdentity: UserSsoIdentity['identityId'];
|
||||
issuer: UserSsoIdentity['issuer'];
|
||||
};
|
||||
|
||||
function UserSsoIdentities({ ssoIdentities }: Props) {
|
||||
const theme = useTheme();
|
||||
const { t } = useTranslation(undefined, {
|
||||
keyPrefix: 'admin_console',
|
||||
});
|
||||
|
@ -40,15 +44,18 @@ function UserSsoIdentities({ ssoIdentities }: Props) {
|
|||
return (
|
||||
ssoIdentities
|
||||
.map((identity) => {
|
||||
const { providerLogo: logo, connectorName: name } =
|
||||
data.find((ssoConnector) => ssoConnector.id === identity.ssoConnectorId) ?? {};
|
||||
const {
|
||||
providerLogo,
|
||||
providerLogoDark,
|
||||
connectorName: name,
|
||||
} = data.find((ssoConnector) => ssoConnector.id === identity.ssoConnectorId) ?? {};
|
||||
const { identityId: userIdentity, issuer } = identity;
|
||||
|
||||
if (!(logo && name)) {
|
||||
if (!(providerLogo && providerLogoDark && name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
return { logo, name, userIdentity, issuer };
|
||||
return { providerLogo, providerLogoDark, name, userIdentity, issuer };
|
||||
})
|
||||
// eslint-disable-next-line unicorn/prefer-native-coercion-functions
|
||||
.filter((identity): identity is DisplayConnector => Boolean(identity))
|
||||
|
@ -80,9 +87,9 @@ function UserSsoIdentities({ ssoIdentities }: Props) {
|
|||
title: t('user_details.sso_connectors.connectors'),
|
||||
dataIndex: 'name',
|
||||
colSpan: 5,
|
||||
render: ({ logo, name }) => (
|
||||
render: ({ providerLogo, providerLogoDark, branding, name }) => (
|
||||
<div className={styles.connectorName}>
|
||||
<ImageWithErrorFallback className={styles.icon} src={logo} alt="logo" />
|
||||
<SsoConnectorLogo data={{ providerLogo, providerLogoDark, branding }} />
|
||||
<div className={styles.name}>
|
||||
<span>{name}</span>
|
||||
</div>
|
||||
|
|
|
@ -161,7 +161,7 @@ describe('getFullSignInExperience()', () => {
|
|||
id: wellConfiguredSsoConnector.id,
|
||||
connectorName: wellConfiguredSsoConnector.connectorName,
|
||||
logo: ssoConnectorFactories[wellConfiguredSsoConnector.providerName].logo,
|
||||
darkLogo: undefined,
|
||||
darkLogo: ssoConnectorFactories[wellConfiguredSsoConnector.providerName].logoDark,
|
||||
},
|
||||
],
|
||||
isDevelopmentTenant: false,
|
||||
|
@ -185,7 +185,7 @@ describe('get sso connectors', () => {
|
|||
id: wellConfiguredSsoConnector.id,
|
||||
connectorName: wellConfiguredSsoConnector.connectorName,
|
||||
logo: ssoConnectorFactories[wellConfiguredSsoConnector.providerName].logo,
|
||||
darkLogo: undefined,
|
||||
darkLogo: ssoConnectorFactories[wellConfiguredSsoConnector.providerName].logoDark,
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
|
|
@ -79,7 +79,7 @@ export const createSignInExperienceLibrary = (
|
|||
id,
|
||||
connectorName,
|
||||
logo: branding.logo ?? factory.logo,
|
||||
darkLogo: branding.darkLogo,
|
||||
darkLogo: branding.darkLogo ?? factory.logoDark,
|
||||
};
|
||||
}
|
||||
);
|
||||
|
|
|
@ -20,12 +20,13 @@ const mockTenantId = 'mock_tenant_id';
|
|||
|
||||
describe('parseFactoryDetail', () => {
|
||||
it.each(Object.values(SsoProviderName))('should return correct detail for %s', (providerName) => {
|
||||
const { logo, description } = ssoConnectorFactories[providerName];
|
||||
const { logo, logoDark, description } = ssoConnectorFactories[providerName];
|
||||
const detail = parseFactoryDetail(ssoConnectorFactories[providerName], 'en');
|
||||
|
||||
expect(detail).toEqual({
|
||||
providerName,
|
||||
logo,
|
||||
logoDark,
|
||||
description: description.en,
|
||||
});
|
||||
});
|
||||
|
@ -33,12 +34,13 @@ describe('parseFactoryDetail', () => {
|
|||
it.each(Object.values(SsoProviderName))(
|
||||
'should return correct detail for %s with unknown locale',
|
||||
(providerName) => {
|
||||
const { logo, description } = ssoConnectorFactories[providerName];
|
||||
const { logo, logoDark, description } = ssoConnectorFactories[providerName];
|
||||
const detail = parseFactoryDetail(ssoConnectorFactories[providerName], 'zh');
|
||||
|
||||
expect(detail).toEqual({
|
||||
providerName,
|
||||
logo,
|
||||
logoDark,
|
||||
description: description.en,
|
||||
});
|
||||
}
|
||||
|
@ -92,6 +94,7 @@ describe('fetchConnectorProviderDetails', () => {
|
|||
expect.objectContaining({
|
||||
...connector,
|
||||
providerLogo: ssoConnectorFactories[connector.providerName].logo,
|
||||
providerLogoDark: ssoConnectorFactories[connector.providerName].logoDark,
|
||||
providerConfig: {
|
||||
...connector.config,
|
||||
scope: 'openid profile email', // Default scope
|
||||
|
|
|
@ -18,11 +18,12 @@ export const parseFactoryDetail = (
|
|||
factory: SingleSignOnFactory<SsoProviderName>,
|
||||
locale: string
|
||||
) => {
|
||||
const { providerName, logo, description } = factory;
|
||||
const { providerName, logo, logoDark, description } = factory;
|
||||
|
||||
return {
|
||||
providerName,
|
||||
logo,
|
||||
logoDark,
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- falsy value expected
|
||||
description: (isKeyOfI18nPhrases(locale, description) && description[locale]) || description.en,
|
||||
};
|
||||
|
@ -55,7 +56,7 @@ export const fetchConnectorProviderDetails = async (
|
|||
): Promise<SsoConnectorWithProviderConfig> => {
|
||||
const { providerName } = connector;
|
||||
|
||||
const { logo, constructor } = ssoConnectorFactories[providerName];
|
||||
const { logo, logoDark, constructor } = ssoConnectorFactories[providerName];
|
||||
|
||||
/*
|
||||
Safely fetch and parse the detailed connector config from provider.
|
||||
|
@ -69,6 +70,7 @@ export const fetchConnectorProviderDetails = async (
|
|||
return {
|
||||
...connector,
|
||||
providerLogo: logo,
|
||||
providerLogoDark: logoDark,
|
||||
providerConfig,
|
||||
};
|
||||
};
|
||||
|
|
|
@ -8,7 +8,9 @@ export class AzureAdSsoConnector extends SamlSsoConnector {}
|
|||
|
||||
export const azureAdSsoConnectorFactory: SingleSignOnFactory<SsoProviderName.AZURE_AD> = {
|
||||
providerName: SsoProviderName.AZURE_AD,
|
||||
logo: 'https://logtoeu.blob.core.windows.net/public-blobs/risa4g/aAYaRZOiGoxS/2023/09/03/zqdr28er/azure.png',
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUuMDY5MzQgMTguNzA5N0M1LjU4NjY3IDE5LjAzMjMgNi40NDY2NyAxOS4zOTEgNy4zNTYgMTkuMzkxQzguMTg0IDE5LjM5MSA4Ljk1MzM0IDE5LjE1MSA5LjU5MDY3IDE4Ljc0MTdDOS41OTA2NyAxOC43NDE3IDkuNTkyIDE4Ljc0MTcgOS41OTMzNCAxOC43NDAzTDEyIDE3LjIzNjNWMjIuNjY3QzExLjYxODcgMjIuNjY3IDExLjIzNDcgMjIuNTYzIDEwLjkwMTMgMjIuMzU1TDUuMDY5MzQgMTguNzA5N1oiIGZpbGw9IiMyMjUwODYiLz4KPHBhdGggZD0iTTEwLjQ3MDcgMi4wMDkwMUwwLjQ3MDY2MiAxMy4yODlDLTAuMzAxMzM4IDE0LjE2MSAtMC4xMDAwMDUgMTUuNDc4MyAwLjkwMTMyOCAxNi4xMDM3QzAuOTAxMzI4IDE2LjEwMzcgNC42MDI2NiAxOC40MTcgNS4wNjkzMyAxOC43MDlDNS41ODY2NiAxOS4wMzE3IDYuNDQ2NjYgMTkuMzkwMyA3LjM1NTk5IDE5LjM5MDNDOC4xODM5OSAxOS4zOTAzIDguOTUzMzMgMTkuMTUwMyA5LjU5MDY2IDE4Ljc0MUM5LjU5MDY2IDE4Ljc0MSA5LjU5MTk5IDE4Ljc0MSA5LjU5MzMzIDE4LjczOTdMMTIgMTcuMjM1N0w2LjE4MTMzIDEzLjU5ODNMMTIuMDAxMyA3LjAzMzAxVjEuMzMzMDFDMTEuNDM2IDEuMzMzMDEgMTAuODcwNyAxLjU1ODM0IDEwLjQ3MDcgMi4wMDkwMVoiIGZpbGw9IiM2NkRERkYiLz4KPHBhdGggZD0iTTYuMTgxMjcgMTMuNTk5NUw2LjI1MDYxIDEzLjY0MjJMMTEuOTk5OSAxNy4yMzY4SDEyLjAwMTNWNy4wMzU1MUwxMS45OTk5IDcuMDM0MThMNi4xODEyNyAxMy41OTk1WiIgZmlsbD0iI0NCRjhGRiIvPgo8cGF0aCBkPSJNMjMuMDk4NyAxNi4xMDRDMjQuMSAxNS40Nzg3IDI0LjMwMTMgMTQuMTYxMyAyMy41MjkzIDEzLjI4OTNMMTYuOTY4IDUuODg4QzE2LjQzODcgNS42NDEzMyAxNS44NDUzIDUuNSAxNS4yMTczIDUuNUMxMy45ODQgNS41IDEyLjg4MTMgNi4wMzIgMTIuMTQ4IDYuODY4TDEyLjAwMjcgNy4wMzJMMTcuODIxMyAxMy41OTczTDEyLjAwMTMgMTcuMjM0N1YyMi42NjUzQzEyLjM4NCAyMi42NjUzIDEyLjc2NTMgMjIuNTYxMyAxMy4wOTg3IDIyLjM1MzNMMjMuMDk4NyAxNi4xMDI3VjE2LjEwNFoiIGZpbGw9IiMwNzQ3OTMiLz4KPHBhdGggZD0iTTEyLjAwMTMgMS4zMzMwMVY3LjAzMzAxTDEyLjE0NjcgNi44NjkwMUMxMi44OCA2LjAzMzAxIDEzLjk4MjcgNS41MDEwMSAxNS4yMTYgNS41MDEwMUMxNS44NDUzIDUuNTAxMDEgMTYuNDM3MyA1LjY0MzY3IDE2Ljk2NjcgNS44ODkwMUwxMy41MjggMi4wMTAzNEMxMy4xMjkzIDEuNTU5NjcgMTIuNTY0IDEuMzM0MzQgMTIgMS4zMzQzNEwxMi4wMDEzIDEuMzMzMDFaIiBmaWxsPSIjMDI5NEU0Ii8+CjxwYXRoIGQ9Ik0xNy44MiAxMy41OTkyTDEyLjAwMTMgNy4wMzUxNlYxNy4yMzUyTDE3LjgyIDEzLjU5OTJaIiBmaWxsPSIjOTZCQ0MyIi8+Cjwvc3ZnPgo=',
|
||||
logoDark:
|
||||
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUuMDY5MzQgMTguNzA5N0M1LjU4NjY3IDE5LjAzMjMgNi40NDY2NyAxOS4zOTEgNy4zNTYgMTkuMzkxQzguMTg0IDE5LjM5MSA4Ljk1MzM0IDE5LjE1MSA5LjU5MDY3IDE4Ljc0MTdDOS41OTA2NyAxOC43NDE3IDkuNTkyIDE4Ljc0MTcgOS41OTMzNCAxOC43NDAzTDEyIDE3LjIzNjNWMjIuNjY3QzExLjYxODcgMjIuNjY3IDExLjIzNDcgMjIuNTYzIDEwLjkwMTMgMjIuMzU1TDUuMDY5MzQgMTguNzA5N1oiIGZpbGw9IiMyMjUwODYiLz4KPHBhdGggZD0iTTEwLjQ3MDcgMi4wMDkwMUwwLjQ3MDY2MiAxMy4yODlDLTAuMzAxMzM4IDE0LjE2MSAtMC4xMDAwMDUgMTUuNDc4MyAwLjkwMTMyOCAxNi4xMDM3QzAuOTAxMzI4IDE2LjEwMzcgNC42MDI2NiAxOC40MTcgNS4wNjkzMyAxOC43MDlDNS41ODY2NiAxOS4wMzE3IDYuNDQ2NjYgMTkuMzkwMyA3LjM1NTk5IDE5LjM5MDNDOC4xODM5OSAxOS4zOTAzIDguOTUzMzMgMTkuMTUwMyA5LjU5MDY2IDE4Ljc0MUM5LjU5MDY2IDE4Ljc0MSA5LjU5MTk5IDE4Ljc0MSA5LjU5MzMzIDE4LjczOTdMMTIgMTcuMjM1N0w2LjE4MTMzIDEzLjU5ODNMMTIuMDAxMyA3LjAzMzAxVjEuMzMzMDFDMTEuNDM2IDEuMzMzMDEgMTAuODcwNyAxLjU1ODM0IDEwLjQ3MDcgMi4wMDkwMVoiIGZpbGw9IiM2NkRERkYiLz4KPHBhdGggZD0iTTYuMTgxMjcgMTMuNTk5NUw2LjI1MDYxIDEzLjY0MjJMMTEuOTk5OSAxNy4yMzY4SDEyLjAwMTNWNy4wMzU1MUwxMS45OTk5IDcuMDM0MThMNi4xODEyNyAxMy41OTk1WiIgZmlsbD0iI0NCRjhGRiIvPgo8cGF0aCBkPSJNMjMuMDk4NyAxNi4xMDRDMjQuMSAxNS40Nzg3IDI0LjMwMTMgMTQuMTYxMyAyMy41MjkzIDEzLjI4OTNMMTYuOTY4IDUuODg4QzE2LjQzODcgNS42NDEzMyAxNS44NDUzIDUuNSAxNS4yMTczIDUuNUMxMy45ODQgNS41IDEyLjg4MTMgNi4wMzIgMTIuMTQ4IDYuODY4TDEyLjAwMjcgNy4wMzJMMTcuODIxMyAxMy41OTczTDEyLjAwMTMgMTcuMjM0N1YyMi42NjUzQzEyLjM4NCAyMi42NjUzIDEyLjc2NTMgMjIuNTYxMyAxMy4wOTg3IDIyLjM1MzNMMjMuMDk4NyAxNi4xMDI3VjE2LjEwNFoiIGZpbGw9IiMwNzQ3OTMiLz4KPHBhdGggZD0iTTEyLjAwMTMgMS4zMzMwMVY3LjAzMzAxTDEyLjE0NjcgNi44NjkwMUMxMi44OCA2LjAzMzAxIDEzLjk4MjcgNS41MDEwMSAxNS4yMTYgNS41MDEwMUMxNS44NDUzIDUuNTAxMDEgMTYuNDM3MyA1LjY0MzY3IDE2Ljk2NjcgNS44ODkwMUwxMy41MjggMi4wMTAzNEMxMy4xMjkzIDEuNTU5NjcgMTIuNTY0IDEuMzM0MzQgMTIgMS4zMzQzNEwxMi4wMDEzIDEuMzMzMDFaIiBmaWxsPSIjMDI5NEU0Ii8+CjxwYXRoIGQ9Ik0xNy44MiAxMy41OTkyTDEyLjAwMTMgNy4wMzUxNlYxNy4yMzUyTDE3LjgyIDEzLjU5OTJaIiBmaWxsPSIjOTZCQ0MyIi8+Cjwvc3ZnPgo=',
|
||||
description: {
|
||||
en: 'This connector is used to connect with Azure AD Single Sign-On.',
|
||||
},
|
||||
|
|
|
@ -49,7 +49,9 @@ export const googleWorkspaceSsoConnectorConfigGuard = basicOidcConnectorConfigGu
|
|||
export const googleWorkSpaceSsoConnectorFactory: SingleSignOnFactory<SsoProviderName.GOOGLE_WORKSPACE> =
|
||||
{
|
||||
providerName: SsoProviderName.GOOGLE_WORKSPACE,
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy41MiAxMi4yNzI5QzIzLjUyIDExLjQyMiAyMy40NDM2IDEwLjYwMzggMjMuMzAxOCA5LjgxODM2SDEyVjE0LjQ2MDJIMTguNDU4MkMxOC4xOCAxNS45NjAyIDE3LjMzNDUgMTcuMjMxMSAxNi4wNjM2IDE4LjA4MlYyMS4wOTI5SDE5Ljk0MThDMjIuMjEwOSAxOS4wMDM4IDIzLjUyIDE1LjkyNzUgMjMuNTIgMTIuMjcyOVoiIGZpbGw9IiM0Mjg1RjQiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyMy45OTk5QzE1LjI0IDIzLjk5OTkgMTcuOTU2NCAyMi45MjU0IDE5Ljk0MTggMjEuMDkyNkwxNi4wNjM2IDE4LjA4MTdDMTQuOTg5MSAxOC44MDE3IDEzLjYxNDUgMTkuMjI3MiAxMiAxOS4yMjcyQzguODc0NTUgMTkuMjI3MiA2LjIyOTA5IDE3LjExNjMgNS4yODU0NiAxNC4yNzk5SDEuMjc2MzdWMTcuMzg5QzMuMjUwOTEgMjEuMzEwOCA3LjMwOTA5IDIzLjk5OTkgMTIgMjMuOTk5OVoiIGZpbGw9IiMzNEE4NTMiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjI4NTQ1IDE0LjI3OThDNS4wNDU0NSAxMy41NTk4IDQuOTA5MDkgMTIuNzkwNyA0LjkwOTA5IDExLjk5OThDNC45MDkwOSAxMS4yMDg5IDUuMDQ1NDUgMTAuNDM5OCA1LjI4NTQ1IDkuNzE5ODFWNi42MTA3MkgxLjI3NjM2QzAuNDYzNjM2IDguMjMwNzIgMCAxMC4wNjM0IDAgMTEuOTk5OEMwIDEzLjkzNjIgMC40NjM2MzYgMTUuNzY4OSAxLjI3NjM2IDE3LjM4ODlMNS4yODU0NSAxNC4yNzk4WiIgZmlsbD0iI0ZCQkMwNSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDQuNzcyNzNDMTMuNzYxOCA0Ljc3MjczIDE1LjM0MzYgNS4zNzgxOCAxNi41ODczIDYuNTY3MjdMMjAuMDI5MSAzLjEyNTQ1QzE3Ljk1MDkgMS4xODkwOSAxNS4yMzQ1IDAgMTIgMEM3LjMwOTA5IDAgMy4yNTA5MSAyLjY4OTA5IDEuMjc2MzcgNi42MTA5MUw1LjI4NTQ2IDkuNzJDNi4yMjkwOSA2Ljg4MzY0IDguODc0NTUgNC43NzI3MyAxMiA0Ljc3MjczWiIgZmlsbD0iI0VBNDMzNSIvPgo8L3N2Zz4K',
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy41MiAxMi4yNzI5QzIzLjUyIDExLjQyMiAyMy40NDM2IDEwLjYwMzggMjMuMzAxOCA5LjgxODM2SDEyVjE0LjQ2MDJIMTguNDU4MkMxOC4xOCAxNS45NjAyIDE3LjMzNDUgMTcuMjMxMSAxNi4wNjM2IDE4LjA4MlYyMS4wOTI5SDE5Ljk0MThDMjIuMjEwOSAxOS4wMDM4IDIzLjUyIDE1LjkyNzQgMjMuNTIgMTIuMjcyOVYxMi4yNzI5WiIgZmlsbD0iIzQyODVGNCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDIzLjk5OTNDMTUuMjQgMjMuOTk5MyAxNy45NTY0IDIyLjkyNDggMTkuOTQxOCAyMS4wOTJMMTYuMDYzNiAxOC4wODExQzE0Ljk4OTEgMTguODAxMSAxMy42MTQ1IDE5LjIyNjYgMTIgMTkuMjI2NkM4Ljg3NDU1IDE5LjIyNjYgNi4yMjkwOSAxNy4xMTU3IDUuMjg1NDYgMTQuMjc5M0gxLjI3NjM3VjE3LjM4ODRDMy4yNTA5MSAyMS4zMTAyIDcuMzA5MDkgMjMuOTk5MyAxMiAyMy45OTkzVjIzLjk5OTNaIiBmaWxsPSIjMzRBODUzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNS4yODU0NSAxNC4yODA0QzUuMDQ1NDUgMTMuNTYwNCA0LjkwOTA5IDEyLjc5MTMgNC45MDkwOSAxMi4wMDA0QzQuOTA5MDkgMTEuMjA5NSA1LjA0NTQ1IDEwLjQ0MDQgNS4yODU0NSA5LjcyMDQyVjYuNjExMzNIMS4yNzYzNkMwLjQ2MzYzNiA4LjIzMTMzIDAgMTAuMDY0MSAwIDEyLjAwMDRDMCAxMy45MzY4IDAuNDYzNjM2IDE1Ljc2OTUgMS4yNzYzNiAxNy4zODk1TDUuMjg1NDUgMTQuMjgwNFYxNC4yODA0WiIgZmlsbD0iI0ZCQkMwNSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDQuNzcyNzNDMTMuNzYxOCA0Ljc3MjczIDE1LjM0MzYgNS4zNzgxOCAxNi41ODczIDYuNTY3MjdMMjAuMDI5MSAzLjEyNTQ1QzE3Ljk1MDkgMS4xODkwOSAxNS4yMzQ1IDAgMTIgMEM3LjMwOTA5IDAgMy4yNTA5MSAyLjY4OTA5IDEuMjc2MzcgNi42MTA5MUw1LjI4NTQ2IDkuNzJDNi4yMjkwOSA2Ljg4MzY0IDguODc0NTUgNC43NzI3MyAxMiA0Ljc3MjczVjQuNzcyNzNaIiBmaWxsPSIjRUE0MzM1Ii8+Cjwvc3ZnPgo=',
|
||||
logoDark:
|
||||
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy41MiAxMi4yNzI5QzIzLjUyIDExLjQyMiAyMy40NDM2IDEwLjYwMzggMjMuMzAxOCA5LjgxODM2SDEyVjE0LjQ2MDJIMTguNDU4MkMxOC4xOCAxNS45NjAyIDE3LjMzNDUgMTcuMjMxMSAxNi4wNjM2IDE4LjA4MlYyMS4wOTI5SDE5Ljk0MThDMjIuMjEwOSAxOS4wMDM4IDIzLjUyIDE1LjkyNzQgMjMuNTIgMTIuMjcyOVYxMi4yNzI5WiIgZmlsbD0iIzQyODVGNCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDI0LjAwMDNDMTUuMjQgMjQuMDAwMyAxNy45NTY0IDIyLjkyNTcgMTkuOTQxOCAyMS4wOTNMMTYuMDYzNiAxOC4wODIxQzE0Ljk4OTEgMTguODAyMSAxMy42MTQ1IDE5LjIyNzUgMTIgMTkuMjI3NUM4Ljg3NDU1IDE5LjIyNzUgNi4yMjkwOSAxNy4xMTY2IDUuMjg1NDYgMTQuMjgwM0gxLjI3NjM3VjE3LjM4OTRDMy4yNTA5MSAyMS4zMTEyIDcuMzA5MDkgMjQuMDAwMyAxMiAyNC4wMDAzVjI0LjAwMDNaIiBmaWxsPSIjMzRBODUzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNS4yODU0NSAxNC4yNzk0QzUuMDQ1NDUgMTMuNTU5NCA0LjkwOTA5IDEyLjc5MDQgNC45MDkwOSAxMS45OTk0QzQuOTA5MDkgMTEuMjA4NSA1LjA0NTQ1IDEwLjQzOTQgNS4yODU0NSA5LjcxOTQ0VjYuNjEwMzVIMS4yNzYzNkMwLjQ2MzYzNiA4LjIzMDM1IDAgMTAuMDYzMSAwIDExLjk5OTRDMCAxMy45MzU4IDAuNDYzNjM2IDE1Ljc2ODUgMS4yNzYzNiAxNy4zODg1TDUuMjg1NDUgMTQuMjc5NFYxNC4yNzk0WiIgZmlsbD0iI0ZCQkMwNSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDQuNzcyNzNDMTMuNzYxOCA0Ljc3MjczIDE1LjM0MzYgNS4zNzgxOCAxNi41ODczIDYuNTY3MjdMMjAuMDI5MSAzLjEyNTQ1QzE3Ljk1MDkgMS4xODkwOSAxNS4yMzQ1IDAgMTIgMEM3LjMwOTA5IDAgMy4yNTA5MSAyLjY4OTA5IDEuMjc2MzcgNi42MTA5MUw1LjI4NTQ2IDkuNzJDNi4yMjkwOSA2Ljg4MzY0IDguODc0NTUgNC43NzI3MyAxMiA0Ljc3MjczVjQuNzcyNzNaIiBmaWxsPSIjRUE0MzM1Ii8+Cjwvc3ZnPgo=',
|
||||
description: {
|
||||
en: 'This connector is used to connect with Google Workspace Single Sign-On.',
|
||||
},
|
||||
|
|
|
@ -28,7 +28,9 @@ export class OidcSsoConnector extends OidcConnector implements SingleSignOn {
|
|||
|
||||
export const oidcSsoConnectorFactory: SingleSignOnFactory<SsoProviderName.OIDC> = {
|
||||
providerName: SsoProviderName.OIDC,
|
||||
logo: 'https://freesvg.org/img/techtonik_OpenID.png',
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzk5MTRfMjA2MTMpIj4KPHBhdGggZD0iTTI0IDEzLjc5OTJMMjMuNCA4LjM5OTIyTDIxLjY2IDkuNTM5MjJDMjAuMDQgOC41MTkyMiAxOCA3Ljc5OTIyIDE1LjcyIDcuNDM5MjJDMTUuNzIgNy40MzkyMiAxNC41OCA3LjE5OTIyIDEzLjA4IDcuMTk5MjJDMTEuNTggNy4xOTkyMiAxMC4yIDcuMzc5MjIgMTAuMiA3LjM3OTIyQzQuMzggOC4wOTkyMiAwIDExLjM5OTIgMCAxNS4zNTkyQzAgMTkuNDM5MiA0LjUgMjIuNzk5MiAxMS40IDIzLjM5OTJWMjEuMDU5MkM2LjY2IDIwLjM5OTIgMy42NiAxOC4xNzkyIDMuNjYgMTUuMzU5MkMzLjY2IDEyLjcxOTIgNi40MiAxMC40OTkyIDEwLjIgOS43NzkyMkMxMC4yIDkuNzc5MjIgMTMuMTQgOS4xMTkyMiAxNS43MiA5Ljg5OTIyQzE2Ljk4IDEwLjE5OTIgMTguMTIgMTAuNjE5MiAxOS4wOCAxMS4yMTkyTDE2LjggMTIuNTk5MkwyNCAxMy43OTkyWiIgZmlsbD0iIzlFOUU5RSIvPgo8cGF0aCBkPSJNMTEuMzk5OSAyLjM5OTYxVjIzLjM5OTZMMTQuOTk5OSAyMS41OTk2VjAuNTk5NjA5TDExLjM5OTkgMi4zOTk2MVoiIGZpbGw9IiNGRjk4MDAiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF85OTE0XzIwNjEzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=',
|
||||
logoDark:
|
||||
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzk5MTRfMjA2MTIpIj4KPHBhdGggZD0iTTI0IDEzLjc5OTJMMjMuNCA4LjM5OTIyTDIxLjY2IDkuNTM5MjJDMjAuMDQgOC41MTkyMiAxOCA3Ljc5OTIyIDE1LjcyIDcuNDM5MjJDMTUuNzIgNy40MzkyMiAxNC41OCA3LjE5OTIyIDEzLjA4IDcuMTk5MjJDMTEuNTggNy4xOTkyMiAxMC4yIDcuMzc5MjIgMTAuMiA3LjM3OTIyQzQuMzggOC4wOTkyMiAwIDExLjM5OTIgMCAxNS4zNTkyQzAgMTkuNDM5MiA0LjUgMjIuNzk5MiAxMS40IDIzLjM5OTJWMjEuMDU5MkM2LjY2IDIwLjM5OTIgMy42NiAxOC4xNzkyIDMuNjYgMTUuMzU5MkMzLjY2IDEyLjcxOTIgNi40MiAxMC40OTkyIDEwLjIgOS43NzkyMkMxMC4yIDkuNzc5MjIgMTMuMTQgOS4xMTkyMiAxNS43MiA5Ljg5OTIyQzE2Ljk4IDEwLjE5OTIgMTguMTIgMTAuNjE5MiAxOS4wOCAxMS4yMTkyTDE2LjggMTIuNTk5MkwyNCAxMy43OTkyWiIgZmlsbD0iIzlFOUU5RSIvPgo8cGF0aCBkPSJNMTEuMzk5OSAyLjM5OTYxVjIzLjM5OTZMMTQuOTk5OSAyMS41OTk2VjAuNTk5NjA5TDExLjM5OTkgMi4zOTk2MVoiIGZpbGw9IiNGRjk4MDAiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF85OTE0XzIwNjEyIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=',
|
||||
description: {
|
||||
en: 'This connector is used to connect with OIDC single sign-on identity provider.',
|
||||
},
|
||||
|
|
5
packages/core/src/sso/OktaSsoConnector/consts.ts
Normal file
5
packages/core/src/sso/OktaSsoConnector/consts.ts
Normal file
File diff suppressed because one or more lines are too long
|
@ -12,6 +12,8 @@ import { basicOidcConnectorConfigGuard } from '../types/oidc.js';
|
|||
import { type ExtendedSocialUserInfo } from '../types/saml.js';
|
||||
import { type SingleSignOnConnectorSession } from '../types/session.js';
|
||||
|
||||
import { logoBase64, logoDarkBase64 } from './consts.js';
|
||||
|
||||
export class OktaSsoConnector extends OidcSsoConnector {
|
||||
/**
|
||||
* Override the getUserInfo method from the OidcSsoConnector class
|
||||
|
@ -54,7 +56,8 @@ export class OktaSsoConnector extends OidcSsoConnector {
|
|||
|
||||
export const oktaSsoConnectorFactory: SingleSignOnFactory<SsoProviderName.OKTA> = {
|
||||
providerName: SsoProviderName.OKTA,
|
||||
logo: 'https://logtodev.blob.core.windows.net/public-blobs/admin/r2a6qctI3lmG/2023/11/22/8bvg68e7/OKTA.D.png',
|
||||
logo: logoBase64,
|
||||
logoDark: logoDarkBase64,
|
||||
description: {
|
||||
en: 'This connector is used to connect with Okta Single Sign-On.',
|
||||
},
|
||||
|
|
|
@ -98,7 +98,9 @@ export class SamlSsoConnector extends SamlConnector implements SingleSignOn {
|
|||
|
||||
export const samlSsoConnectorFactory: SingleSignOnFactory<SsoProviderName.SAML> = {
|
||||
providerName: SsoProviderName.SAML,
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjAuMDk5QzAgMTcuNDYzMyAyLjUxNDM0IDcuNjMwMjggNy43MTI5MSAxLjA0MTE0QzQuMDQzMzMgNy45NjgxOCAxLjkwODcxIDEyLjY1ODQgMy40NjU3MSAxNi4zMTQ0QzQuNjg4OTEgMTkuMTg2NiAxMC45NzQ4IDE4LjI3NDMgMTQuMzcyNSAxNy4xMjU0QzguMzI0NTEgMTkuODYyNCAyLjExNzk0IDIwLjIzNDEgMCAyMC4wOTlaIiBmaWxsPSIjQzEyNzJEIi8+CjxwYXRoIGQ9Ik0xMS4yNjA1IDAuNzQ5ODc4QzEzLjU1NTYgMi4wNjc3MSAyMC44NjEzIDkuMTQ5NzEgMjQgMTYuOTIxNkMxOS44MDI1IDEwLjI5NzYgMTYuNzg1NSA2LjExNDA0IDEyLjgyMzMgNS42MjcwMUM5LjcxMDQ5IDUuMjQ0NCA3LjM2MjA1IDExLjExNDMgNi42NjM2NCAxNC42MTUxQzcuMzA0MTggOC4wMzc2OCAxMC4wODM4IDIuNTA2MzggMTEuMjYwNSAwLjc0OTg3OFoiIGZpbGw9IiNDMTI3MkQiLz4KPHBhdGggZD0iTTIyLjUzMTkgMjAuMDc1NUMyMC4yMzY4IDIxLjM5MzMgMTAuNDE2OCAyNC4xNDQzIDIuMDc5NTMgMjIuOTYxNkM5Ljk0NjU0IDIyLjY1ODUgMTUuMDk4MiAyMi4xNTE5IDE3LjUwMzQgMTguOTgyOUMxOS4zOTMgMTYuNDkzMyAxNS40NTU2IDExLjUzNTcgMTIuNzU2MiA5LjE4Mzg0QzE4LjE2MzcgMTMuMDI0MiAyMS41OTA3IDE4LjE4MzggMjIuNTMxOSAyMC4wNzU1WiIgZmlsbD0iI0MxMjcyRCIvPgo8L3N2Zz4K',
|
||||
logo: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjAuMDk4OEMwIDE3LjQ2MzIgMi41MTQzNCA3LjYzMDE1IDcuNzEyOTEgMS4wNDEwMkM0LjA0MzMzIDcuOTY4MDYgMS45MDg3MSAxMi42NTgzIDMuNDY1NzEgMTYuMzE0M0M0LjY4ODkxIDE5LjE4NjUgMTAuOTc0OCAxOC4yNzQxIDE0LjM3MjUgMTcuMTI1M0M4LjMyNDUxIDE5Ljg2MjMgMi4xMTc5NCAyMC4yMzQgMCAyMC4wOTg4WiIgZmlsbD0iI0MxMjcyRCIvPgo8cGF0aCBkPSJNMTEuMjYwNSAwLjc1QzEzLjU1NTcgMi4wNjc4MyAyMC44NjEzIDkuMTQ5ODMgMjQgMTYuOTIxN0MxOS44MDI2IDEwLjI5NzcgMTYuNzg1NSA2LjExNDE2IDEyLjgyMzMgNS42MjcxM0M5LjcxMDU1IDUuMjQ0NTIgNy4zNjIxMSAxMS4xMTQ0IDYuNjYzNyAxNC42MTUyQzcuMzA0MjQgOC4wMzc4IDEwLjA4MzggMi41MDY1IDExLjI2MDUgMC43NVoiIGZpbGw9IiNDMTI3MkQiLz4KPHBhdGggZD0iTTIyLjUzMiAyMC4wNzUyQzIwLjIzNjggMjEuMzkzMSAxMC40MTY4IDI0LjE0NDEgMi4wNzk1OSAyMi45NjE0QzkuOTQ2NiAyMi42NTgzIDE1LjA5ODMgMjIuMTUxNiAxNy41MDM1IDE4Ljk4MjZDMTkuMzkzMSAxNi40OTMxIDE1LjQ1NTYgMTEuNTM1NSAxMi43NTYzIDkuMTgzNTlDMTguMTYzOCAxMy4wMjQgMjEuNTkwNyAxOC4xODM2IDIyLjUzMiAyMC4wNzUyWiIgZmlsbD0iI0MxMjcyRCIvPgo8L3N2Zz4K',
|
||||
logoDark:
|
||||
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjAuMDk4OEMwIDE3LjQ2MzIgMi41MTQzNCA3LjYzMDE1IDcuNzEyOTEgMS4wNDEwMkM0LjA0MzMzIDcuOTY4MDYgMS45MDg3MSAxMi42NTgzIDMuNDY1NzEgMTYuMzE0M0M0LjY4ODkxIDE5LjE4NjUgMTAuOTc0OCAxOC4yNzQxIDE0LjM3MjUgMTcuMTI1M0M4LjMyNDUxIDE5Ljg2MjMgMi4xMTc5NCAyMC4yMzQgMCAyMC4wOTg4WiIgZmlsbD0iI0MxMjcyRCIvPgo8cGF0aCBkPSJNMTEuMjYwNSAwLjc1QzEzLjU1NTcgMi4wNjc4MyAyMC44NjEzIDkuMTQ5ODMgMjQgMTYuOTIxN0MxOS44MDI2IDEwLjI5NzcgMTYuNzg1NSA2LjExNDE2IDEyLjgyMzMgNS42MjcxM0M5LjcxMDU1IDUuMjQ0NTIgNy4zNjIxMSAxMS4xMTQ0IDYuNjYzNyAxNC42MTUyQzcuMzA0MjQgOC4wMzc4IDEwLjA4MzggMi41MDY1IDExLjI2MDUgMC43NVoiIGZpbGw9IiNDMTI3MkQiLz4KPHBhdGggZD0iTTIyLjUzMTkgMjAuMDc1MkMyMC4yMzY3IDIxLjM5MzEgMTAuNDE2NyAyNC4xNDQxIDIuMDc5NDcgMjIuOTYxNEM5Ljk0NjQ4IDIyLjY1ODMgMTUuMDk4MSAyMi4xNTE2IDE3LjUwMzQgMTguOTgyNkMxOS4zOTI5IDE2LjQ5MzEgMTUuNDU1NSAxMS41MzU1IDEyLjc1NjIgOS4xODM1OUMxOC4xNjM2IDEzLjAyNCAyMS41OTA2IDE4LjE4MzYgMjIuNTMxOSAyMC4wNzUyWiIgZmlsbD0iI0MxMjcyRCIvPgo8L3N2Zz4K',
|
||||
description: {
|
||||
en: 'This connector is used to connect to SAML single sign-on identity provider.',
|
||||
},
|
||||
|
|
|
@ -35,6 +35,7 @@ type SingleSignOnConnectorConfig = {
|
|||
export type SingleSignOnFactory<T extends SsoProviderName> = {
|
||||
providerName: T;
|
||||
logo: string;
|
||||
logoDark: string;
|
||||
description: I18nPhrases;
|
||||
configGuard: SingleSignOnConnectorConfig[T];
|
||||
constructor: SingleSignOnConstructor[T];
|
||||
|
|
|
@ -15,6 +15,7 @@ export type ConnectorFactoryResponse = {
|
|||
|
||||
export type SsoConnectorWithProviderConfig = SsoConnector & {
|
||||
providerLogo: string;
|
||||
providerLogoDark: string;
|
||||
providerConfig?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
|
|
|
@ -112,6 +112,7 @@ describe('get sso-connectors', () => {
|
|||
|
||||
expect(connector).toBeDefined();
|
||||
expect(connector?.providerLogo).toBeDefined();
|
||||
expect(connector?.providerLogoDark).toBeDefined();
|
||||
|
||||
// Empty config object is a valid SAML config.
|
||||
if (providerName === 'OIDC') {
|
||||
|
|
|
@ -51,6 +51,7 @@ export type SupportedSsoConnector = Omit<SsoConnector, 'providerName'> & {
|
|||
const ssoConnectorFactoryDetailGuard = z.object({
|
||||
providerName: z.nativeEnum(SsoProviderName),
|
||||
logo: z.string(),
|
||||
logoDark: z.string(),
|
||||
description: z.string(),
|
||||
});
|
||||
|
||||
|
@ -70,6 +71,7 @@ export const ssoConnectorWithProviderConfigGuard = SsoConnectors.guard
|
|||
z.object({
|
||||
providerName: z.nativeEnum(SsoProviderName),
|
||||
providerLogo: z.string(),
|
||||
providerLogoDark: z.string(),
|
||||
providerConfig: z.record(z.unknown()).optional(),
|
||||
})
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue