diff --git a/apps/dokploy/pages/index.tsx b/apps/dokploy/pages/index.tsx index 0d40eb73..50bdc29a 100644 --- a/apps/dokploy/pages/index.tsx +++ b/apps/dokploy/pages/index.tsx @@ -17,7 +17,7 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { validateRequest, isAdminPresent } from "@dokploy/builders"; +import { validateRequest, isAdminPresent, IS_CLOUD } from "@dokploy/builders"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import type { GetServerSidePropsContext } from "next"; @@ -50,16 +50,12 @@ const loginSchema = z.object({ type Login = z.infer; -interface Props { - hasAdmin: boolean; -} - type AuthResponse = { is2FAEnabled: boolean; authId: string; }; -export default function Home({ hasAdmin }: Props) { +export default function Home() { const [temp, setTemp] = useState({ is2FAEnabled: false, authId: "", @@ -169,14 +165,6 @@ export default function Home({ hasAdmin }: Props) { )} - {!hasAdmin && ( -
- Dont have an account? - - Sign up - -
- )}
{ return {page}; }; export async function getServerSideProps(context: GetServerSidePropsContext) { + if (IS_CLOUD) { + const { user } = await validateRequest(context.req, context.res); + + if (user) { + return { + redirect: { + permanent: true, + destination: "/dashboard/projects", + }, + }; + } + return { + props: {}, + }; + } const hasAdmin = await isAdminPresent(); if (!hasAdmin) { @@ -230,6 +233,7 @@ export async function getServerSideProps(context: GetServerSidePropsContext) { }, }; } + return { props: { hasAdmin, diff --git a/apps/dokploy/pages/register.tsx b/apps/dokploy/pages/register.tsx index cdfd2cb6..f808975b 100644 --- a/apps/dokploy/pages/register.tsx +++ b/apps/dokploy/pages/register.tsx @@ -15,8 +15,7 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { IS_CLOUD, isAdminPresent } from "@dokploy/builders"; -// import { IS_CLOUD } from "@/server/constants"; +import { IS_CLOUD, isAdminPresent, validateRequest } from "@dokploy/builders"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { AlertTriangle } from "lucide-react"; @@ -26,6 +25,7 @@ import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; +import type { GetServerSidePropsContext } from "next"; const registerSchema = z .object({ @@ -70,7 +70,7 @@ interface Props { isCloud: boolean; } -const Register = ({ hasAdmin, isCloud }: Props) => { +const Register = ({ isCloud }: Props) => { const router = useRouter(); const { mutateAsync, error, isError } = api.auth.createAdmin.useMutation(); @@ -226,8 +226,18 @@ const Register = ({ hasAdmin, isCloud }: Props) => { }; export default Register; -export async function getServerSideProps() { +export async function getServerSideProps(context: GetServerSidePropsContext) { if (IS_CLOUD) { + const { user } = await validateRequest(context.req, context.res); + + if (user) { + return { + redirect: { + permanent: true, + destination: "/dashboard/projects", + }, + }; + } return { props: { isCloud: true, @@ -246,7 +256,6 @@ export async function getServerSideProps() { } return { props: { - hasAdmin, isCloud: false, }, }; diff --git a/apps/dokploy/server/api/routers/auth.ts b/apps/dokploy/server/api/routers/auth.ts index 1e99c8db..3d7b1afa 100644 --- a/apps/dokploy/server/api/routers/auth.ts +++ b/apps/dokploy/server/api/routers/auth.ts @@ -46,7 +46,6 @@ export const authRouter = createTRPCRouter({ }); } } - const newAdmin = await createAdmin(input); const session = await lucia.createSession(newAdmin.id || "", {}); ctx.res.appendHeader( @@ -55,12 +54,7 @@ export const authRouter = createTRPCRouter({ ); return true; } catch (error) { - console.log(error); - throw new TRPCError({ - code: "BAD_REQUEST", - message: "Error to create the main admin", - cause: error, - }); + throw error; } }), createUser: publicProcedure diff --git a/packages/builders/src/auth/auth.ts b/packages/builders/src/auth/auth.ts index a70989de..839fb9bb 100644 --- a/packages/builders/src/auth/auth.ts +++ b/packages/builders/src/auth/auth.ts @@ -69,14 +69,20 @@ export async function validateRequest( lucia.createBlankSessionCookie().serialize(), ); } - if (result.user) { - if (result.user?.rol === "admin") { - const admin = await findAdminByAuthId(result.user.id); - result.user.adminId = admin.adminId; - } else if (result.user?.rol === "user") { - const userResult = await findUserByAuthId(result.user.id); - result.user.adminId = userResult.adminId; + try { + if (result.user?.rol === "admin") { + const admin = await findAdminByAuthId(result.user.id); + result.user.adminId = admin.adminId; + } else if (result.user?.rol === "user") { + const userResult = await findUserByAuthId(result.user.id); + result.user.adminId = userResult.adminId; + } + } catch (error) { + return { + user: null, + session: null, + }; } } diff --git a/packages/builders/src/services/auth.ts b/packages/builders/src/services/auth.ts index 371fb919..61bf7292 100644 --- a/packages/builders/src/services/auth.ts +++ b/packages/builders/src/services/auth.ts @@ -38,15 +38,16 @@ export const createAdmin = async (input: typeof apiCreateAdmin._type) => { }); } - if (!IS_CLOUD) { - await tx - .insert(admins) - .values({ - authId: newAuth.id, + await tx + .insert(admins) + .values({ + authId: newAuth.id, + ...(!IS_CLOUD && { serverIp: await getPublicIpWithFallback(), - }) - .returning(); - } + }), + serverIp: await getPublicIpWithFallback(), + }) + .returning(); return newAuth; });