0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-13 21:30:30 -05:00

fix(console): should not block admin tenant owner from creating more tenants (#4066)

This commit is contained in:
Darcy Ye 2023-06-21 12:49:28 +08:00 committed by GitHub
parent 370b97ff36
commit 3a0944444a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View file

@ -37,3 +37,5 @@ export const getUserTenantId = () => {
export const getBasename = () => (isCloud ? '/' + getUserTenantId() : ossConsolePath); export const getBasename = () => (isCloud ? '/' + getUserTenantId() : ossConsolePath);
export const getSignOutRedirectPathname = () => (isCloud ? '/' : ossConsolePath); export const getSignOutRedirectPathname = () => (isCloud ? '/' : ossConsolePath);
export const maxFreeTenantNumbers = 3;

View file

@ -1,3 +1,4 @@
import { adminTenantId } from '@logto/schemas';
import { type TenantInfo } from '@logto/schemas/models'; import { type TenantInfo } from '@logto/schemas/models';
import classNames from 'classnames'; import classNames from 'classnames';
import { useContext, useRef, useState, useEffect, useMemo } from 'react'; import { useContext, useRef, useState, useEffect, useMemo } from 'react';
@ -9,6 +10,7 @@ import Tick from '@/assets/icons/tick.svg';
import { useCloudSwr } from '@/cloud/hooks/use-cloud-swr'; import { useCloudSwr } from '@/cloud/hooks/use-cloud-swr';
import CreateTenantModal from '@/cloud/pages/Main/TenantLandingPage/TenantLandingPageContent/CreateTenantModal'; import CreateTenantModal from '@/cloud/pages/Main/TenantLandingPage/TenantLandingPageContent/CreateTenantModal';
import AppError from '@/components/AppError'; import AppError from '@/components/AppError';
import { maxFreeTenantNumbers } from '@/consts/tenants';
import { TenantsContext } from '@/contexts/TenantsProvider'; import { TenantsContext } from '@/contexts/TenantsProvider';
import Divider from '@/ds-components/Divider'; import Divider from '@/ds-components/Divider';
import Dropdown, { DropdownItem } from '@/ds-components/Dropdown'; import Dropdown, { DropdownItem } from '@/ds-components/Dropdown';
@ -33,6 +35,15 @@ function TenantSelector() {
return tenants?.find((tenant) => tenant.id === currentTenantId); return tenants?.find((tenant) => tenant.id === currentTenantId);
}, [currentTenantId, tenants]); }, [currentTenantId, tenants]);
const isCreateButtonDisabled = useMemo(
() =>
/** Should not block admin tenant owners from creating more than three tenants */
tenants &&
!tenants.some(({ id }) => id === adminTenantId) &&
tenants.length >= maxFreeTenantNumbers,
[tenants]
);
const anchorRef = useRef<HTMLDivElement>(null); const anchorRef = useRef<HTMLDivElement>(null);
const [showDropdown, setShowDropdown] = useState(false); const [showDropdown, setShowDropdown] = useState(false);
const [showCreateTenantModal, setShowCreateTenantModal] = useState(false); const [showCreateTenantModal, setShowCreateTenantModal] = useState(false);
@ -45,8 +56,6 @@ function TenantSelector() {
return null; return null;
} }
const isCreateButtonDisabled = tenants.length >= 3;
return ( return (
<> <>
<div <div