From 3d838aa0741df210d01890267126df73fa51b38e Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Sat, 4 Apr 2026 09:19:29 -0600 Subject: [PATCH] feat(password-update): enhance password update functionality across database routers - Added confirmation password field and validation to the `UpdateDatabasePassword` component. - Refactored password update logic in MariaDB, MongoDB, MySQL, Postgres, and Redis routers to utilize database transactions for improved reliability. - Ensured consistent handling of password updates across all database types, enhancing user experience and security. --- .../shared/update-database-password.tsx | 31 ++++++++++++++++--- apps/dokploy/server/api/routers/mariadb.ts | 25 +++++++++------ apps/dokploy/server/api/routers/mongo.ts | 17 ++++++---- apps/dokploy/server/api/routers/mysql.ts | 29 +++++++++-------- apps/dokploy/server/api/routers/postgres.ts | 18 +++++++---- apps/dokploy/server/api/routers/redis.ts | 17 ++++++---- 6 files changed, 92 insertions(+), 45 deletions(-) diff --git a/apps/dokploy/components/shared/update-database-password.tsx b/apps/dokploy/components/shared/update-database-password.tsx index fa5c42b6c..978375fd0 100644 --- a/apps/dokploy/components/shared/update-database-password.tsx +++ b/apps/dokploy/components/shared/update-database-password.tsx @@ -24,9 +24,15 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -const updatePasswordSchema = z.object({ - password: z.string().min(1, "Password is required"), -}); +const updatePasswordSchema = z + .object({ + password: z.string().min(1, "Password is required"), + confirmPassword: z.string().min(1, "Please confirm the password"), + }) + .refine((data) => data.password === data.confirmPassword, { + message: "Passwords do not match", + path: ["confirmPassword"], + }); type UpdatePassword = z.infer; @@ -44,7 +50,7 @@ export const UpdateDatabasePassword = ({ const [isPending, setIsPending] = useState(false); const form = useForm({ - defaultValues: { password: "" }, + defaultValues: { password: "", confirmPassword: "" }, resolver: zodResolver(updatePasswordSchema), }); @@ -122,6 +128,23 @@ export const UpdateDatabasePassword = ({ )} /> + ( + + Confirm {label} + + + + + + )} + />