diff --git a/apps/dokploy/components/dashboard/search-command.tsx b/apps/dokploy/components/dashboard/search-command.tsx
index 2d066992a..5ff7eccab 100644
--- a/apps/dokploy/components/dashboard/search-command.tsx
+++ b/apps/dokploy/components/dashboard/search-command.tsx
@@ -60,6 +60,9 @@ export const SearchCommand = () => {
enabled: !!session,
});
const { data: isCloud } = api.settings.isCloud.useQuery();
+ const { data: permissions } = api.user.getPermissions.useQuery(undefined, {
+ enabled: !!session,
+ });
React.useEffect(() => {
const down = (e: KeyboardEvent) => {
@@ -183,14 +186,16 @@ export const SearchCommand = () => {
{!isCloud && (
<>
- {
- router.push("/dashboard/monitoring");
- setOpen(false);
- }}
- >
- Monitoring
-
+ {permissions?.monitoring.read && permissions?.docker.read && (
+ {
+ router.push("/dashboard/monitoring");
+ setOpen(false);
+ }}
+ >
+ Monitoring
+
+ )}
{
router.push("/dashboard/traefik");
diff --git a/apps/dokploy/components/layouts/side.tsx b/apps/dokploy/components/layouts/side.tsx
index 9cbc187b6..430349867 100644
--- a/apps/dokploy/components/layouts/side.tsx
+++ b/apps/dokploy/components/layouts/side.tsx
@@ -192,9 +192,11 @@ const MENU: Menu = {
title: "Monitoring",
url: "/dashboard/monitoring",
icon: BarChartHorizontalBigIcon,
- // Only enabled in non-cloud environments and if user has monitoring.read
+ // Only enabled in non-cloud environments (product decision) and if user has monitoring.read and docker.read
isEnabled: ({ isCloud, permissions }) =>
- !isCloud && !!permissions?.monitoring.read,
+ !isCloud &&
+ !!permissions?.monitoring.read &&
+ !!permissions?.docker.read,
},
{
isSingle: true,
diff --git a/apps/dokploy/components/layouts/user-nav.tsx b/apps/dokploy/components/layouts/user-nav.tsx
index aa9747cfb..1a68544f6 100644
--- a/apps/dokploy/components/layouts/user-nav.tsx
+++ b/apps/dokploy/components/layouts/user-nav.tsx
@@ -87,14 +87,16 @@ export const UserNav = () => {
{!isCloud ? (
<>
- {
- router.push("/dashboard/monitoring");
- }}
- >
- Monitoring
-
+ {permissions?.monitoring.read && permissions?.docker.read && (
+ {
+ router.push("/dashboard/monitoring");
+ }}
+ >
+ Monitoring
+
+ )}
{permissions?.traefikFiles.read && (
{
+ getDockerDiskUsage: withPermission("docker", "read").query(async () => {
if (IS_CLOUD) {
return [];
}