Feat: Enable admin password in admin mode (#540)

* WIP: save local changes before merging
* Enable admin password in admin mode #374
This commit is contained in:
Burt
2025-11-05 21:48:28 +08:00
committed by GitHub
parent 96ed2c6ea7
commit 8b853a963d
13 changed files with 421 additions and 91 deletions
+15 -6
View File
@@ -15,6 +15,8 @@ import (
"strconv"
"strings"
"syscall"
"github.com/joho/godotenv"
)
// LeverageConfig 杠杆配置
@@ -160,6 +162,10 @@ func main() {
fmt.Println("╚════════════════════════════════════════════════════════════╝")
fmt.Println()
// Load environment variables from .env file if present (for local/dev runs)
// In Docker Compose, variables are injected by the runtime and this is harmless.
_ = godotenv.Load()
// 初始化数据库配置
dbPath := "config.db"
if len(os.Args) > 1 {
@@ -206,17 +212,20 @@ func main() {
}
auth.SetJWTSecret(jwtSecret)
// 管理员模式下,确保admin用户存在
// 管理员模式下需要管理员密码,缺失则退出
if adminMode {
err := database.EnsureAdminUser()
if err != nil {
log.Printf("⚠️ 创建admin用户失败: %v", err)
} else {
log.Printf("✓ 管理员模式已启用,无需登录")
adminPassword := os.Getenv("NOFX_ADMIN_PASSWORD")
if adminPassword == "" {
log.Fatalf("Admin mode is enabled but NOFX_ADMIN_PASSWORD is missing. Set NOFX_ADMIN_PASSWORD and restart.")
}
if err := auth.SetAdminPasswordFromPlain(adminPassword); err != nil {
log.Fatalf("Failed to set admin password: %v", err)
}
auth.SetAdminMode(true)
log.Printf("✓ Admin mode enabled. All API endpoints require admin authentication.")
}
log.Printf("✓ 配置数据库初始化成功")
fmt.Println()