From 30110d3fcaf0ff2c50a924dd16d7867804503329 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 18 Feb 2026 21:37:54 +0100 Subject: [PATCH] fix: show error for duplicate folder name + add client-side validation CreateDirectory now returns an error when the folder already exists instead of silently succeeding. JS validates folder name format (alphanumeric + underscore, max 32 chars) before sending the request. Co-Authored-By: Claude Opus 4.6 --- controller/internal/storage/attach_linux.go | 2 +- .../internal/web/templates/storage_attach.html | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/controller/internal/storage/attach_linux.go b/controller/internal/storage/attach_linux.go index 3e54a25..96dd0d9 100644 --- a/controller/internal/storage/attach_linux.go +++ b/controller/internal/storage/attach_linux.go @@ -148,7 +148,7 @@ func CreateDirectory(basePath, name string) (string, error) { // Check if already exists if fi, err := os.Stat(targetPath); err == nil { if fi.IsDir() { - return targetPath, nil // already exists, idempotent + return "", fmt.Errorf("a mappa már létezik: %s", name) } return "", fmt.Errorf("a cél már létezik és nem mappa") } diff --git a/controller/internal/web/templates/storage_attach.html b/controller/internal/web/templates/storage_attach.html index 4785de6..05c40fc 100644 --- a/controller/internal/web/templates/storage_attach.html +++ b/controller/internal/web/templates/storage_attach.html @@ -393,6 +393,18 @@ function createDir() { var errEl = document.getElementById('browse-error'); errEl.style.display = 'none'; + // Client-side validation + if (!/^[a-zA-Z0-9_]+$/.test(name)) { + errEl.textContent = 'A mappanéven csak betűk, számok és alávonás megengedett.'; + errEl.style.display = 'block'; + return; + } + if (name.length > 32) { + errEl.textContent = 'A mappanév legfeljebb 32 karakter lehet.'; + errEl.style.display = 'block'; + return; + } + fetch('/api/storage/attach/mkdir', { method: 'POST', headers: {'Content-Type': 'application/json'},