diff --git a/apps/dokploy/components/layouts/navigation-tabs.tsx b/apps/dokploy/components/layouts/navigation-tabs.tsx index 2a397fe9..decab28a 100644 --- a/apps/dokploy/components/layouts/navigation-tabs.tsx +++ b/apps/dokploy/components/layouts/navigation-tabs.tsx @@ -54,9 +54,9 @@ const tabMap: Record = { label: "Requests", description: "Manage your requests", index: "/dashboard/requests", - // isShow: ({ rol, user }) => { - // return Boolean(rol === "admin" || user?.canAccessToDocker); - // }, + isShow: ({ rol, user }) => { + return Boolean(rol === "admin" || user?.canAccessToDocker); + }, }, settings: { label: "Settings", diff --git a/apps/dokploy/pages/dashboard/requests.tsx b/apps/dokploy/pages/dashboard/requests.tsx index 3ea739f5..e973ba2a 100644 --- a/apps/dokploy/pages/dashboard/requests.tsx +++ b/apps/dokploy/pages/dashboard/requests.tsx @@ -4,6 +4,7 @@ import type { GetServerSidePropsContext } from "next"; import type { ReactElement } from "react"; import * as React from "react"; import { ShowRequests } from "@/components/dashboard/requests/show-requests"; +import { isValidLicense } from "@/server/api/services/license"; export default function Requests() { return ; @@ -24,6 +25,17 @@ export async function getServerSideProps( }; } + const isValid = await isValidLicense(); + + if (!isValid) { + return { + redirect: { + permanent: true, + destination: "/dashboard/projects", + }, + }; + } + return { props: {}, }; diff --git a/apps/dokploy/pages/dashboard/settings/license.tsx b/apps/dokploy/pages/dashboard/settings/license.tsx index b9a1883e..4633c6a3 100644 --- a/apps/dokploy/pages/dashboard/settings/license.tsx +++ b/apps/dokploy/pages/dashboard/settings/license.tsx @@ -28,9 +28,7 @@ import { toast } from "sonner"; import { z } from "zod"; const schema = z.object({ - licenseKey: z.string().min(1, { - message: "License key is required", - }), + licenseKey: z.string(), }); type Schema = z.infer; diff --git a/apps/dokploy/server/api/routers/license.ts b/apps/dokploy/server/api/routers/license.ts index 5699df84..b61ceb65 100644 --- a/apps/dokploy/server/api/routers/license.ts +++ b/apps/dokploy/server/api/routers/license.ts @@ -7,6 +7,12 @@ export const licenseRouter = createTRPCRouter({ setLicense: adminProcedure.input(z.string()).mutation(async ({ input }) => { const admin = await findAdmin(); + if (!input) { + return await updateAdmin(admin.authId, { + licenseKey: "", + }); + } + try { const result = await fetch("http://127.0.0.1:4000/v1/validate-license", { method: "POST", diff --git a/apps/dokploy/server/api/services/license.ts b/apps/dokploy/server/api/services/license.ts new file mode 100644 index 00000000..f6459af5 --- /dev/null +++ b/apps/dokploy/server/api/services/license.ts @@ -0,0 +1,18 @@ +import { findAdmin } from "./admin"; + +export const isValidLicense = async () => { + const admin = await findAdmin(); + + const result = await fetch("http://127.0.0.1:4000/v1/validate-license", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + licenseKey: admin.licenseKey, + }), + }); + + const data = await result.json(); + return data.valid; +};