From 63b726c62980203f577963b247d6411251017a9c Mon Sep 17 00:00:00 2001 From: monsky Date: Sun, 1 Jun 2025 15:46:37 +0000 Subject: [PATCH] seeder admin account & define all model --- config/database.go | 3 ++- database/seeds/user_seeder.go | 29 ++++++++++++++++++++++++++--- internal/app/app.go | 5 +++++ utils/conv/conv.go | 12 ++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/config/database.go b/config/database.go index 1842169..abac7fc 100644 --- a/config/database.go +++ b/config/database.go @@ -1,6 +1,7 @@ package config import ( + "blcompro/database/seeds" "fmt" "github.com/rs/zerolog/log" @@ -32,7 +33,7 @@ func (cfg Config) ConnectionPostgres() (*Postgres, error) { return nil, err } - // seeds.SeedAdmin(db) + seeds.SeedAdmin(db) sqlDB.SetMaxOpenConns(cfg.Psql.DBMaxOpen) sqlDB.SetMaxIdleConns(cfg.Psql.DBMaxIdle) diff --git a/database/seeds/user_seeder.go b/database/seeds/user_seeder.go index 482aa82..25646c2 100644 --- a/database/seeds/user_seeder.go +++ b/database/seeds/user_seeder.go @@ -1,5 +1,28 @@ package seeds -func SeedAdmin(db *gorm) { - bytes, err := -} \ No newline at end of file +import ( + "blcompro/internal/core/domain/model" + "blcompro/utils/conv" + + "github.com/rs/zerolog/log" + "gorm.io/gorm" +) + +func SeedAdmin(db *gorm.DB) { + bytes, err := conv.HashPassword("admin123") + if err != nil { + log.Fatal().Err(err).Msg(err.Error()) + } + + admin := model.User{ + Name: "Admin", + Email: "admin@blcompro.com", + Password: bytes, + } + + if err = db.FirstOrCreate(&admin, model.User{Email: admin.Email}).Error; err != nil { + log.Fatal().Err(err).Msg(err.Error()) + } else { + log.Info().Msgf("Admin user created with ID: %d", admin.ID) + } +} diff --git a/internal/app/app.go b/internal/app/app.go index f98ba55..c49f469 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -15,6 +15,11 @@ import ( func RunServer() { cfg := config.NewConfig() + _, err := cfg.ConnectionPostgres() + if err != nil { + log.Fatal("Failed to connect to database: %v", err) + return + } e := echo.New() e.Use(middleware.CORS()) diff --git a/utils/conv/conv.go b/utils/conv/conv.go index c05219b..94a34f5 100644 --- a/utils/conv/conv.go +++ b/utils/conv/conv.go @@ -1 +1,13 @@ package conv + +import "golang.org/x/crypto/bcrypt" + +func HashPassword(password string) (string, error) { + bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14) + return string(bytes), err +} + +func CheckPasswordHash(password, hash string) bool { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + return err == nil +}