Files
0451meishi/backend/internal/seed/admin.go

37 lines
803 B
Go
Raw Normal View History

2026-01-15 11:37:22 +08:00
package seed
import (
"errors"
"0451meishiditu/backend/internal/config"
"0451meishiditu/backend/internal/models"
"golang.org/x/crypto/bcrypt"
"gorm.io/gorm"
)
func EnsureInitialAdmin(db *gorm.DB, cfg config.Config) error {
var cnt int64
if err := db.Model(&models.AdminUser{}).Count(&cnt).Error; err != nil {
return err
}
if cnt > 0 {
return nil
}
if cfg.AdminInitUsername == "" || cfg.AdminInitPassword == "" {
return errors.New("ADMIN_INIT_USERNAME and ADMIN_INIT_PASSWORD are required for initial seed")
}
hash, err := bcrypt.GenerateFromPassword([]byte(cfg.AdminInitPassword), bcrypt.DefaultCost)
if err != nil {
return err
}
return db.Create(&models.AdminUser{
Username: cfg.AdminInitUsername,
PasswordHash: string(hash),
Role: "admin",
}).Error
}