feat: 优化配置和文件上传
- 上传文件名添加唯一ID避免覆盖 - 支持通过环境变量配置 JWT 密钥和 Token 过期时间 - 支持通过环境变量覆盖管理员账号(可选)
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
@@ -260,6 +261,50 @@ func Load() {
|
||||
if cleanedColl := os.Getenv("MONGO_CLEANED_COLLECTION"); cleanedColl != "" {
|
||||
Global.MongoCleanedCollection = cleanedColl
|
||||
}
|
||||
// 认证相关环境变量覆盖
|
||||
if jwtSecret := os.Getenv("JWT_SECRET"); jwtSecret != "" {
|
||||
Global.JWTSecret = jwtSecret
|
||||
}
|
||||
if tokenExpiry := os.Getenv("TOKEN_EXPIRY"); tokenExpiry != "" {
|
||||
if expiry, err := strconv.Atoi(tokenExpiry); err == nil && expiry > 0 {
|
||||
Global.TokenExpiry = expiry
|
||||
}
|
||||
}
|
||||
// 管理员账号环境变量覆盖(覆盖配置文件中的第一个用户)
|
||||
adminUser := os.Getenv("ADMIN_USERNAME")
|
||||
adminPass := os.Getenv("ADMIN_PASSWORD")
|
||||
if adminUser != "" && adminPass != "" {
|
||||
adminName := os.Getenv("ADMIN_NAME")
|
||||
if adminName == "" {
|
||||
adminName = "管理员"
|
||||
}
|
||||
adminEmail := os.Getenv("ADMIN_EMAIL")
|
||||
if adminEmail == "" {
|
||||
adminEmail = adminUser + "@billai.com"
|
||||
}
|
||||
// 查找并更新 admin 用户,或添加新用户
|
||||
found := false
|
||||
for i := range Global.Users {
|
||||
if Global.Users[i].Username == adminUser || Global.Users[i].Role == "admin" {
|
||||
Global.Users[i].Username = adminUser
|
||||
Global.Users[i].Password = adminPass
|
||||
Global.Users[i].Name = adminName
|
||||
Global.Users[i].Email = adminEmail
|
||||
Global.Users[i].Role = "admin"
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
Global.Users = append(Global.Users, UserInfo{
|
||||
Username: adminUser,
|
||||
Password: adminPass,
|
||||
Name: adminName,
|
||||
Email: adminEmail,
|
||||
Role: "admin",
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ResolvePath 解析路径(相对路径转为绝对路径)
|
||||
|
||||
Reference in New Issue
Block a user