caddydash/user/init.go
wjqserver b10790c212 init
2025-06-20 16:33:27 +08:00

52 lines
1.1 KiB
Go

package user
import (
"caddydash/db"
"fmt"
"golang.org/x/crypto/bcrypt"
)
func InitAdminUser(username string, password string, cdb *db.ConfigDB) error {
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: %w", err)
}
err = cdb.AddUser(username, hashedPassword)
if err != nil {
return fmt.Errorf("failed to add admin user: %w", err)
}
userStatus.SetInitialized(true)
return nil
}
// bcrypt加密password串
func hashPassword(password string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 11)
if err != nil {
return "", err
}
return string(bytes), err
}
func InitAdminUserStatus(cdb *db.ConfigDB) error {
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
} else {
userStatus.SetInitialized(false)
return nil
}
}