package seed import ( "goGin/app/database/models" "log" dbconfig "goGin/app/database/config" "golang.org/x/crypto/bcrypt" ) func SeedDefaultSettings() { // Seed default CORS whitelist var whitelistCount int64 dbconfig.DB.Model(&models.CorsWhitelist{}).Count(&whitelistCount) if whitelistCount == 0 { defaultWhitelist := []models.CorsWhitelist{ { Origin: "http://localhost:3000", Description: "Default local frontend", IsActive: true, CreatedBy: "system", }, { Origin: "http://localhost:8080", Description: "Backend self", IsActive: true, CreatedBy: "system", }, } for _, w := range defaultWhitelist { dbconfig.DB.Create(&w) } log.Println("Default CORS whitelist seeded") } // Seed default rate limit settings var rateLimitCount int64 dbconfig.DB.Model(&models.RateLimitSetting{}).Count(&rateLimitCount) if rateLimitCount == 0 { defaultRateLimits := []models.RateLimitSetting{ { Name: "login", Description: "Login endpoint rate limit", MaxRequests: 5, WindowSeconds: 60, // 1 minute IsActive: true, }, { Name: "register", Description: "Registration endpoint rate limit", MaxRequests: 3, WindowSeconds: 300, // 5 minutes IsActive: true, }, { Name: "api", Description: "General API rate limit", MaxRequests: 100, WindowSeconds: 60, // 1 minute IsActive: true, }, } for _, r := range defaultRateLimits { dbconfig.DB.Create(&r) } log.Println("Default rate limit settings seeded") } } // SeedDefaultAdmin creates the default admin user if it doesn't exist func SeedDefaultAdmin() { // Check if admin user already exists (including soft-deleted) var adminUser models.User err := dbconfig.DB.Unscoped().Where("email = ?", "admin@gauth.local").First(&adminUser).Error if err != nil { // Admin user doesn't exist, create one // Hash default password: "Admin@123" hashedPassword, err := bcrypt.GenerateFromPassword([]byte("Admin@123"), bcrypt.DefaultCost) if err != nil { log.Printf("Failed to hash admin password: %v", err) return } trueBool := true adminUser = models.User{ Email: "admin@gauth.local", UserName: "admin", Password: string(hashedPassword), EmailVerified: &trueBool, } if err := dbconfig.DB.Create(&adminUser).Error; err != nil { log.Printf("Failed to create admin user: %v", err) return } log.Println("✅ Default admin user created:") log.Println(" Email: admin@gauth.local") log.Println(" Password: Admin@123") log.Println(" ⚠️ Please change this password after first login!") } else { // Admin user exists (possibly soft-deleted) if adminUser.DeletedAt.Valid { log.Println("Restoring deleted admin user...") if err := dbconfig.DB.Model(&adminUser).Unscoped().Update("deleted_at", nil).Error; err != nil { log.Printf("Failed to restore admin user: %v", err) return } } } // Admin rolü eklenmesi kaldırıldı çünkü Role modeli yok }