mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-10 06:14:06 +00:00
hide add idp button when no mode set
This commit is contained in:
@@ -8,23 +8,25 @@ import { useEnvContext } from "@app/hooks/useEnvContext";
|
|||||||
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
||||||
import { tierMatrix } from "@server/lib/billing/tierMatrix";
|
import { tierMatrix } from "@server/lib/billing/tierMatrix";
|
||||||
import { build } from "@server/build";
|
import { build } from "@server/build";
|
||||||
|
import type { Env } from "@app/lib/types/env";
|
||||||
|
|
||||||
|
export function isIdpGlobalModeBannerVisible(env: Env): boolean {
|
||||||
|
if (build === "saas") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return env.app.identityProviderMode === undefined;
|
||||||
|
}
|
||||||
|
|
||||||
export function IdpGlobalModeBanner() {
|
export function IdpGlobalModeBanner() {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const { env } = useEnvContext();
|
const { env } = useEnvContext();
|
||||||
const { isPaidUser, hasEnterpriseLicense } = usePaidStatus();
|
const { isPaidUser, hasEnterpriseLicense } = usePaidStatus();
|
||||||
|
|
||||||
const identityProviderModeUndefined =
|
|
||||||
env.app.identityProviderMode === undefined;
|
|
||||||
const paidUserForOrgOidc = isPaidUser(tierMatrix.orgOidc);
|
const paidUserForOrgOidc = isPaidUser(tierMatrix.orgOidc);
|
||||||
const enterpriseUnlicensed =
|
const enterpriseUnlicensed =
|
||||||
build === "enterprise" && !hasEnterpriseLicense;
|
build === "enterprise" && !hasEnterpriseLicense;
|
||||||
|
|
||||||
if (build === "saas") {
|
if (!isIdpGlobalModeBannerVisible(env)) {
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!identityProviderModeUndefined) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,15 @@ interface DataTableProps<TData, TValue> {
|
|||||||
data: TData[];
|
data: TData[];
|
||||||
onAdd?: () => void;
|
onAdd?: () => void;
|
||||||
addActions?: DataTableAddAction[];
|
addActions?: DataTableAddAction[];
|
||||||
|
addButtonDisabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function IdpDataTable<TData, TValue>({
|
export function IdpDataTable<TData, TValue>({
|
||||||
columns,
|
columns,
|
||||||
data,
|
data,
|
||||||
onAdd,
|
onAdd,
|
||||||
addActions
|
addActions,
|
||||||
|
addButtonDisabled
|
||||||
}: DataTableProps<TData, TValue>) {
|
}: DataTableProps<TData, TValue>) {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
@@ -33,6 +35,7 @@ export function IdpDataTable<TData, TValue>({
|
|||||||
addButtonText={t("idpAdd")}
|
addButtonText={t("idpAdd")}
|
||||||
onAdd={onAdd}
|
onAdd={onAdd}
|
||||||
addActions={addActions}
|
addActions={addActions}
|
||||||
|
addButtonDisabled={addButtonDisabled}
|
||||||
enableColumnVisibility={true}
|
enableColumnVisibility={true}
|
||||||
stickyRightColumn="actions"
|
stickyRightColumn="actions"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import type { ListUserAdminOrgIdpsResponse } from "@server/routers/orgIdp/types"
|
|||||||
import { cn } from "@app/lib/cn";
|
import { cn } from "@app/lib/cn";
|
||||||
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
import { usePaidStatus } from "@app/hooks/usePaidStatus";
|
||||||
import { tierMatrix } from "@server/lib/billing/tierMatrix";
|
import { tierMatrix } from "@server/lib/billing/tierMatrix";
|
||||||
|
import { isIdpGlobalModeBannerVisible } from "@app/components/IdpGlobalModeBanner";
|
||||||
|
|
||||||
export type IdpRow = {
|
export type IdpRow = {
|
||||||
idpId: number;
|
idpId: number;
|
||||||
@@ -85,13 +86,15 @@ export default function IdpTable({ idps, orgId }: Props) {
|
|||||||
const [importSubmitting, setImportSubmitting] = useState(false);
|
const [importSubmitting, setImportSubmitting] = useState(false);
|
||||||
const [debouncedImportSearch] = useDebounce(importSearchQuery, 150);
|
const [debouncedImportSearch] = useDebounce(importSearchQuery, 150);
|
||||||
|
|
||||||
const api = createApiClient(useEnvContext());
|
const envContext = useEnvContext();
|
||||||
|
const api = createApiClient(envContext);
|
||||||
const { user } = useUserContext();
|
const { user } = useUserContext();
|
||||||
const { isPaidUser } = usePaidStatus();
|
const { isPaidUser } = usePaidStatus();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
const canImportOrgOidcIdp = isPaidUser(tierMatrix.orgOidc);
|
const canImportOrgOidcIdp = isPaidUser(tierMatrix.orgOidc);
|
||||||
|
const addIdpDisabled = isIdpGlobalModeBannerVisible(envContext.env);
|
||||||
|
|
||||||
const { data: adminIdpsRaw = [] } = useQuery({
|
const { data: adminIdpsRaw = [] } = useQuery({
|
||||||
queryKey: ["admin-org-idps", user.userId],
|
queryKey: ["admin-org-idps", user.userId],
|
||||||
@@ -427,6 +430,7 @@ export default function IdpTable({ idps, orgId }: Props) {
|
|||||||
<IdpDataTable
|
<IdpDataTable
|
||||||
columns={columns}
|
columns={columns}
|
||||||
data={idps}
|
data={idps}
|
||||||
|
addButtonDisabled={addIdpDisabled}
|
||||||
addActions={[
|
addActions={[
|
||||||
{
|
{
|
||||||
label: t("idpAddActionCreateNew"),
|
label: t("idpAddActionCreateNew"),
|
||||||
|
|||||||
Reference in New Issue
Block a user