diff --git a/apps/dokploy/components/dashboard/compose/general/generic/show.tsx b/apps/dokploy/components/dashboard/compose/general/generic/show.tsx index 22a5a5400..bbbd42fc6 100644 --- a/apps/dokploy/components/dashboard/compose/general/generic/show.tsx +++ b/apps/dokploy/components/dashboard/compose/general/generic/show.tsx @@ -1,7 +1,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { api } from "@/utils/api"; -import { GitBranch, LockIcon } from "lucide-react"; +import { CodeIcon, GitBranch, LockIcon } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import { ComposeFileEditor } from "../compose-file-editor"; @@ -87,8 +87,9 @@ export const ShowProviderFormCompose = ({ composeId }: Props) => { + Raw diff --git a/apps/dokploy/components/dashboard/settings/github/remove-github-app.tsx b/apps/dokploy/components/dashboard/settings/git/remove-git-provider.tsx similarity index 100% rename from apps/dokploy/components/dashboard/settings/github/remove-github-app.tsx rename to apps/dokploy/components/dashboard/settings/git/remove-git-provider.tsx diff --git a/apps/dokploy/components/dashboard/settings/git/show-git-providers.tsx b/apps/dokploy/components/dashboard/settings/git/show-git-providers.tsx index 95244d5ad..a1d94f38c 100644 --- a/apps/dokploy/components/dashboard/settings/git/show-git-providers.tsx +++ b/apps/dokploy/components/dashboard/settings/git/show-git-providers.tsx @@ -10,7 +10,7 @@ import { AddGithubProvider } from "./add-github-provider"; import { AddBitbucketProvider } from "./add-bitbucket-provider"; import { api } from "@/utils/api"; import Link from "next/link"; -import { RemoveGitProvider } from "../github/remove-github-app"; +import { RemoveGitProvider } from "./remove-git-provider"; import { useUrl } from "@/utils/hooks/use-url"; export const ShowGitProviders = () => { @@ -32,7 +32,7 @@ export const ShowGitProviders = () => {

Git Providers

- Connect your Git Providers to use it for login. + Connect your Git provider for authentication.

diff --git a/apps/dokploy/components/dashboard/settings/github/gitlab-setup.tsx b/apps/dokploy/components/dashboard/settings/github/gitlab-setup.tsx deleted file mode 100644 index 354348db3..000000000 --- a/apps/dokploy/components/dashboard/settings/github/gitlab-setup.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import React, { useState, useEffect } from "react"; -import { Button, buttonVariants } from "@/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { BadgeCheck, ExternalLink } from "lucide-react"; -import Link from "next/link"; -import { api } from "@/utils/api"; - -export const GitlabSetup = () => { - const [applicationId, setApplicationId] = useState(""); - const [applicationSecret, setApplicationSecret] = useState(""); - const haveGitlabConfigured = false; - const [url, setUrl] = useState(""); - // const { data: haveGitlabConfigured } = - // api.admin.haveGitlabConfigured.useQuery(); - const { data: adminData } = api.admin.one.useQuery(); - - useEffect(() => { - const protocolAndHost = `${window.location.protocol}//${window.location.host}`; - - setUrl(`${protocolAndHost}`); - }, [adminData]); - - // const createGitlabApp = api.admin.createGitlabApp.useMutation(); - - const handleCreateApp = async () => { - // try { - // // await createGitlabApp.mutateAsync({ - // // applicationId, - // // applicationSecret, - // // callbackUrl: `${window.location.origin}/api/gitlab/callback`, - // // }); - // // Refetch the configuration status - // // await haveGitlabConfigured.refetch(); - // } catch (error) { - // console.error("Failed to create GitLab app", error); - // } - }; - - return ( - - - Configure GitLab - - Setup your GitLab account to access your repositories. - - - - {haveGitlabConfigured ? ( -
-
- - GitLab account configured successfully. - - -
-
- - - Manage GitLab App - -
-
- ) : ( -
-

- To integrate your GitLab account, you need to create a new - application in your GitLab settings. Follow these steps: -

-
    -
  1. - Go to your GitLab profile settings{" "} - - - -
  2. -
  3. Navigate to Applications
  4. -
  5. - Create a new application with the following details: -
      -
    • Name: Dokploy
    • -
    • Redirect URI: {`${url}/api/gitlab/callback`}
    • -
    • Scopes: api, read_user, read_repository
    • -
    -
  6. -
  7. - After creating, you'll receive an Application ID and Secret -
  8. -
- setApplicationId(e.target.value)} - /> - setApplicationSecret(e.target.value)} - /> - -
- )} -
-
- ); -}; diff --git a/apps/dokploy/components/dashboard/settings/users/add-permissions.tsx b/apps/dokploy/components/dashboard/settings/users/add-permissions.tsx index fd3511ec4..3684c814b 100644 --- a/apps/dokploy/components/dashboard/settings/users/add-permissions.tsx +++ b/apps/dokploy/components/dashboard/settings/users/add-permissions.tsx @@ -40,6 +40,7 @@ const addPermissions = z.object({ canAccessToDocker: z.boolean().optional().default(false), canAccessToAPI: z.boolean().optional().default(false), canAccessToSSHKeys: z.boolean().optional().default(false), + canAccessToGitProviders: z.boolean().optional().default(false), }); type AddPermissions = z.infer; @@ -84,6 +85,7 @@ export const AddUserPermissions = ({ userId }: Props) => { canAccessToDocker: data.canAccessToDocker, canAccessToAPI: data.canAccessToAPI, canAccessToSSHKeys: data.canAccessToSSHKeys, + canAccessToGitProviders: data.canAccessToGitProviders, }); } }, [form, form.formState.isSubmitSuccessful, form.reset, data]); @@ -101,6 +103,7 @@ export const AddUserPermissions = ({ userId }: Props) => { canAccessToDocker: data.canAccessToDocker, canAccessToAPI: data.canAccessToAPI, canAccessToSSHKeys: data.canAccessToSSHKeys, + canAccessToGitProviders: data.canAccessToGitProviders, }) .then(async () => { toast.success("Permissions updated"); @@ -293,6 +296,26 @@ export const AddUserPermissions = ({ userId }: Props) => { )} /> + ( + +
+ Access to Git Providers + + Allow to users to access to the Git Providers section + +
+ + + +
+ )} + /> { return (
- {/* */} - {/* */}
); }; @@ -41,7 +37,7 @@ export async function getServerSideProps( }, }; } - const { req, res, resolvedUrl } = ctx; + const { req, res } = ctx; const helpers = createServerSideHelpers({ router: appRouter, ctx: { @@ -63,7 +59,7 @@ export async function getServerSideProps( authId: auth.id, }); - if (!user.canAccessToSSHKeys) { + if (!user.canAccessToGitProviders) { return { redirect: { permanent: true, diff --git a/apps/dokploy/server/api/services/application.ts b/apps/dokploy/server/api/services/application.ts index ea56e09a1..2bbd5b3c2 100644 --- a/apps/dokploy/server/api/services/application.ts +++ b/apps/dokploy/server/api/services/application.ts @@ -146,7 +146,6 @@ export const deployApplication = async ({ }) => { const application = await findApplicationById(applicationId); const buildLink = `${await getDokployUrl()}/dashboard/project/${application.projectId}/services/application/${application.applicationId}?tab=deployments`; - const admin = await findAdmin(); const deployment = await createDeployment({ applicationId: applicationId, title: titleLog, diff --git a/apps/dokploy/server/db/schema/user.ts b/apps/dokploy/server/db/schema/user.ts index 2710be837..fec3d1277 100644 --- a/apps/dokploy/server/db/schema/user.ts +++ b/apps/dokploy/server/db/schema/user.ts @@ -34,6 +34,9 @@ export const users = pgTable("user", { canDeleteServices: boolean("canDeleteServices").notNull().default(false), canAccessToDocker: boolean("canAccessToDocker").notNull().default(false), canAccessToAPI: boolean("canAccessToAPI").notNull().default(false), + canAccessToGitProviders: boolean("canAccessToGitProviders") + .notNull() + .default(false), canAccessToTraefikFiles: boolean("canAccessToTraefikFiles") .notNull() .default(false), @@ -109,6 +112,7 @@ export const apiAssignPermissions = createSchema canAccessToDocker: true, canAccessToAPI: true, canAccessToSSHKeys: true, + canAccessToGitProviders: true, }) .required();