diff --git a/react-openapi/Admin.tsx b/react-openapi/Admin.tsx index 738495d..b35790e 100644 --- a/react-openapi/Admin.tsx +++ b/react-openapi/Admin.tsx @@ -24,6 +24,10 @@ export const ConfigContext = React.createContext(null); function Dashboard({ basePath }: { basePath: string }) { const config = React.useContext(ConfigContext); const navigate = useNavigate(); + + const resources = config?.resources || []; + const visibleResources = resources.filter((res) => !res.hidden); + return ( @@ -41,7 +45,7 @@ function Dashboard({ basePath }: { basePath: string }) { mt: 4, }} > - {config?.resources.map((res) => ( + {visibleResources.map((res) => ( !res.hidden); + if (!currentUser) { return ( navigate(`/admin/${name}`)} - resources={config?.resources || []} + resources={visibleResources} > } /> diff --git a/react-openapi/types/config.ts b/react-openapi/types/config.ts index b8b434c..24ee18e 100644 --- a/react-openapi/types/config.ts +++ b/react-openapi/types/config.ts @@ -30,6 +30,7 @@ export interface ResourceConfig { primaryKey: string; fields: Record; pagination?: boolean; + hidden?: boolean; } export interface AppConfig { diff --git a/react-openapi/types/overrides.ts b/react-openapi/types/overrides.ts index 797604f..6a37d10 100644 --- a/react-openapi/types/overrides.ts +++ b/react-openapi/types/overrides.ts @@ -12,4 +12,5 @@ export interface FieldOverride { export interface ResourceOverride { fields?: Record; pagination?: boolean; + hidden?: boolean; } diff --git a/react-openapi/utils/openapi_loader.ts b/react-openapi/utils/openapi_loader.ts index c99ca42..112f74c 100644 --- a/react-openapi/utils/openapi_loader.ts +++ b/react-openapi/utils/openapi_loader.ts @@ -162,6 +162,7 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco primaryKey: "id", // Strict default, no heuristics fields, pagination: resourceOverride.pagination, + hidden: resourceOverride.hidden, }); }