Skip to content

Commit 9f6ab6b

Browse files
authored
Merge pull request Wei-Shaw#1090 from laukkw/main
fix(setup): align install validation and expose backend errors
2 parents bf3d6c0 + aa6047c commit 9f6ab6b

4 files changed

Lines changed: 18 additions & 16 deletions

File tree

backend/internal/setup/handler.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,12 @@ func install(c *gin.Context) {
247247
return
248248
}
249249

250+
req.Admin.Email = strings.TrimSpace(req.Admin.Email)
251+
req.Database.Host = strings.TrimSpace(req.Database.Host)
252+
req.Database.User = strings.TrimSpace(req.Database.User)
253+
req.Database.DBName = strings.TrimSpace(req.Database.DBName)
254+
req.Redis.Host = strings.TrimSpace(req.Redis.Host)
255+
250256
// ========== COMPREHENSIVE INPUT VALIDATION ==========
251257
// Database validation
252258
if !validateHostname(req.Database.Host) {
@@ -319,13 +325,6 @@ func install(c *gin.Context) {
319325
return
320326
}
321327

322-
// Trim whitespace from string inputs
323-
req.Admin.Email = strings.TrimSpace(req.Admin.Email)
324-
req.Database.Host = strings.TrimSpace(req.Database.Host)
325-
req.Database.User = strings.TrimSpace(req.Database.User)
326-
req.Database.DBName = strings.TrimSpace(req.Database.DBName)
327-
req.Redis.Host = strings.TrimSpace(req.Redis.Host)
328-
329328
cfg := &SetupConfig{
330329
Database: req.Database,
331330
Redis: req.Redis,

frontend/src/i18n/locales/en.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ export default {
218218
email: 'Email',
219219
password: 'Password',
220220
confirmPassword: 'Confirm Password',
221-
passwordPlaceholder: 'Min 6 characters',
221+
passwordPlaceholder: 'Min 8 characters',
222222
confirmPasswordPlaceholder: 'Confirm password',
223223
passwordMismatch: 'Passwords do not match'
224224
},

frontend/src/i18n/locales/zh.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ export default {
218218
email: '邮箱',
219219
password: '密码',
220220
confirmPassword: '确认密码',
221-
passwordPlaceholder: '至少 6 个字符',
221+
passwordPlaceholder: '至少 8 个字符',
222222
confirmPasswordPlaceholder: '确认密码',
223223
passwordMismatch: '密码不匹配'
224224
},

frontend/src/views/setup/SetupWizardView.vue

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ const canProceed = computed(() => {
565565
case 2:
566566
return (
567567
formData.admin.email &&
568-
formData.admin.password.length >= 6 &&
568+
formData.admin.password.length >= 8 &&
569569
formData.admin.password === confirmPassword.value
570570
)
571571
default:
@@ -582,8 +582,9 @@ async function testDatabaseConnection() {
582582
await testDatabase(formData.database)
583583
dbConnected.value = true
584584
} catch (error: unknown) {
585-
const err = error as { response?: { data?: { detail?: string } }; message?: string }
586-
errorMessage.value = err.response?.data?.detail || err.message || 'Connection failed'
585+
const err = error as { response?: { data?: { detail?: string; message?: string } }; message?: string }
586+
errorMessage.value =
587+
err.response?.data?.detail || err.response?.data?.message || err.message || 'Connection failed'
587588
} finally {
588589
testingDb.value = false
589590
}
@@ -598,8 +599,9 @@ async function testRedisConnection() {
598599
await testRedis(formData.redis)
599600
redisConnected.value = true
600601
} catch (error: unknown) {
601-
const err = error as { response?: { data?: { detail?: string } }; message?: string }
602-
errorMessage.value = err.response?.data?.detail || err.message || 'Connection failed'
602+
const err = error as { response?: { data?: { detail?: string; message?: string } }; message?: string }
603+
errorMessage.value =
604+
err.response?.data?.detail || err.response?.data?.message || err.message || 'Connection failed'
603605
} finally {
604606
testingRedis.value = false
605607
}
@@ -622,8 +624,9 @@ async function performInstall() {
622624
// Start polling for service restart
623625
waitForServiceRestart()
624626
} catch (error: unknown) {
625-
const err = error as { response?: { data?: { detail?: string } }; message?: string }
626-
errorMessage.value = err.response?.data?.detail || err.message || 'Installation failed'
627+
const err = error as { response?: { data?: { detail?: string; message?: string } }; message?: string }
628+
errorMessage.value =
629+
err.response?.data?.detail || err.response?.data?.message || err.message || 'Installation failed'
627630
} finally {
628631
installing.value = false
629632
}

0 commit comments

Comments
 (0)