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 <noreply@anthropic.com>
This commit is contained in:
2026-02-18 21:37:54 +01:00
parent 6b7ca566df
commit 30110d3fca
2 changed files with 13 additions and 1 deletions
+1 -1
View File
@@ -148,7 +148,7 @@ func CreateDirectory(basePath, name string) (string, error) {
// Check if already exists // Check if already exists
if fi, err := os.Stat(targetPath); err == nil { if fi, err := os.Stat(targetPath); err == nil {
if fi.IsDir() { 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") return "", fmt.Errorf("a cél már létezik és nem mappa")
} }
@@ -393,6 +393,18 @@ function createDir() {
var errEl = document.getElementById('browse-error'); var errEl = document.getElementById('browse-error');
errEl.style.display = 'none'; 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', { fetch('/api/storage/attach/mkdir', {
method: 'POST', method: 'POST',
headers: {'Content-Type': 'application/json'}, headers: {'Content-Type': 'application/json'},