add env init

This commit is contained in:
wjqserver 2025-06-20 19:08:03 +08:00
parent 8736847912
commit 9ec789f4bb
4 changed files with 259 additions and 3 deletions

View file

@ -3,6 +3,7 @@ package user
import (
"caddydash/db"
"fmt"
"os"
"golang.org/x/crypto/bcrypt"
)
@ -50,3 +51,36 @@ func InitAdminUserStatus(cdb *db.ConfigDB) error {
return nil
}
}
func InitFormEnv(cdb *db.ConfigDB) error {
username := os.Getenv("CADDYDASH_USERNAME")
password := os.Getenv("CADDYDASH_PASSWORD")
if username != "" && password != "" {
// 检查是否已经有用户
hasUser, err := cdb.HasAnyUser()
if err != nil {
return fmt.Errorf("failed to check if any user exists: %w", err)
}
if hasUser {
// 如果已经有用户,则不执行初始化,但设置状态为已初始化
userStatus.SetInitialized(true)
return nil
}
// 执行初始化
hashedPassword, err := hashPassword(password)
if err != nil {
return fmt.Errorf("failed to hash password from env: %w", err)
}
err = cdb.AddUser(username, hashedPassword)
if err != nil {
return fmt.Errorf("failed to add admin user from env: %w", err)
}
userStatus.SetInitialized(true)
return nil
}
// 如果环境变量不存在,则根据数据库状态设置初始化状态
return InitAdminUserStatus(cdb)
}