package main import ( "ezops/internal/models" "go.uber.org/zap" "golang.org/x/crypto/bcrypt" "gorm.io/gorm" ) // seedData 初始化种子数据(admin用户 + LDAP配置) func seedData(db *gorm.DB) { // 1. 创建默认 admin 用户(仅首次) var userCount int64 db.Model(&models.User{}).Count(&userCount) if userCount == 0 { hashedPassword, _ := bcrypt.GenerateFromPassword([]byte("123456"), bcrypt.DefaultCost) admin := models.User{ Username: "admin", Password: string(hashedPassword), Email: "admin@ezops.local", RealName: "管理员", Status: 1, IsAdmin: true, AuthSource: "local", } if err := db.Create(&admin).Error; err != nil { zap.L().Warn("failed to seed admin user", zap.Error(err)) } else { zap.L().Info("seeded default admin user (admin/123456)") } } // 2. 创建默认 LDAP 配置 var ldapCount int64 db.Model(&models.LDAPConfig{}).Count(&ldapCount) if ldapCount == 0 { port := 389 useLDAPS := false searchFilter := "(objectClass=inetOrgPerson)" userMapping := `{"username":"uid","email":"mail","display_name":"cn"}` ldapCfg := models.LDAPConfig{ LDAPHost: "8.217.205.92", LDAPPort: &port, UseLDAPS: &useLDAPS, AdminDN: "cn=admin,dc=opsx,dc=vip", AdminPassword: "LQl2GX7EEg2N", BaseDN: "dc=opsx,dc=vip", SearchFilter: &searchFilter, UserMapping: &userMapping, } if err := db.Create(&ldapCfg).Error; err != nil { zap.L().Warn("failed to seed LDAP config", zap.Error(err)) } else { zap.L().Info("seeded default LDAP config (8.217.205.92:389)") } } }