Files
whatshooked/pkg/storage/seed.go
Hein f9773bd07f
Some checks failed
CI / Test (1.23) (push) Failing after -22m46s
CI / Test (1.22) (push) Failing after -22m32s
CI / Build (push) Failing after -23m30s
CI / Lint (push) Failing after -23m12s
refactor(API): Relspect integration
2026-02-05 13:39:43 +02:00

56 lines
1.6 KiB
Go

package storage
import (
"context"
"fmt"
"time"
"git.warky.dev/wdevs/whatshooked/pkg/models"
resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes"
"github.com/google/uuid"
"golang.org/x/crypto/bcrypt"
)
// SeedData creates initial data for the application
func SeedData(ctx context.Context) error {
if DB == nil {
return fmt.Errorf("database not initialized")
}
// Check if admin user already exists
userRepo := NewUserRepository(DB)
_, err := userRepo.GetByUsername(ctx, "admin")
if err == nil {
// Admin user already exists
return nil
}
// Create default admin user
hashedPassword, err := bcrypt.GenerateFromPassword([]byte("admin123"), bcrypt.DefaultCost)
if err != nil {
return fmt.Errorf("failed to hash password: %w", err)
}
now := time.Now()
adminUser := &models.ModelPublicUser{
ID: resolvespec_common.NewSqlString(uuid.New().String()),
Username: resolvespec_common.NewSqlString("admin"),
Email: resolvespec_common.NewSqlString("admin@whatshooked.local"),
Password: resolvespec_common.NewSqlString(string(hashedPassword)),
FullName: resolvespec_common.NewSqlString("System Administrator"),
Role: resolvespec_common.NewSqlString("admin"),
Active: true,
CreatedAt: resolvespec_common.NewSqlTime(now),
UpdatedAt: resolvespec_common.NewSqlTime(now),
}
if err := userRepo.Create(ctx, adminUser); err != nil {
return fmt.Errorf("failed to create admin user: %w", err)
}
fmt.Println("✓ Created default admin user (username: admin, password: admin123)")
fmt.Println("⚠ Please change the default password after first login!")
return nil
}