This commit is contained in:
PB
2025-10-20 17:11:36 +02:00
parent ddbb8bea25
commit f978db83ee
9 changed files with 30 additions and 103 deletions

View File

@@ -9,10 +9,7 @@ import (
"github.com/go-pg/migrations/v8" "github.com/go-pg/migrations/v8"
"github.com/go-pg/pg/v10" "github.com/go-pg/pg/v10"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd" cnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
baseCnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
cnf "git.ego.freeddns.org/egommerce/identity-service/internal/server"
) )
const ( const (
@@ -39,49 +36,39 @@ func main() {
} }
flag.Parse() flag.Parse()
if baseCnf.ErrLoadingEnvs != nil { if cnf.ErrLoadingEnvs != nil {
log.Panicln(baseCnf.ErrLoadingEnvs) log.Panicln(cnf.ErrLoadingEnvs)
} }
c := cnf.NewConfig("migrator") // c := cnf.NewConfig("migrator")
// dbURL := baseCnf.GetEnv("DATABASE_URL", defDbURL) // dbURL := baseCnf.GetEnv("DATABASE_URL", defDbURL)
logHost, logPort, err := fluentd.ParseAddr(c.LoggerAddr)
if err != nil {
log.Fatalf("Error parsing logger addr: %s. Err: %v", c.LoggerAddr, err)
}
logger, err := fluentd.NewLogger(c.GetAppFullName(), logHost, logPort) // @Refactor NewLogger return (logger, error)
if err != nil {
log.Fatalf("Error connecting to %s:%d. Err: %v", logHost, logPort, err)
}
defer logger.Close()
db := pg.Connect(&pg.Options{ // FIXME db := pg.Connect(&pg.Options{ // FIXME
Addr: "db:5432", Addr: "db-postgres:5432",
User: "egommerce", User: "postgres",
Password: "12345678", Password: "12345678",
Database: "egommerce", Database: "egommerce",
}) })
defer db.Close() defer db.Close()
mTbl := baseCnf.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName) mTbl := cnf.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName)
mig := migrations.NewCollection() mig := migrations.NewCollection()
mig.SetTableName(mTbl) mig.SetTableName(mTbl)
if err := mig.DiscoverSQLMigrations("./migrations"); err != nil { if err := mig.DiscoverSQLMigrations("./migrations"); err != nil {
logger.Log("migration dicovery error: %#v", err) log.Printf("migration dicovery error: %#v\n", err)
} }
oldVersion, newVersion, err := mig.Run(db, flag.Args()...) oldVersion, newVersion, err := mig.Run(db, flag.Args()...)
if err != nil { if err != nil {
logger.Log("migration runner error: %#v", err) log.Printf("migration runner error: %#v", err)
os.Exit(1) os.Exit(1)
} }
if newVersion != oldVersion { if newVersion != oldVersion {
logger.Log("migrated from version %d to %d\n", oldVersion, newVersion) log.Printf("migrated from version %d to %d\n", oldVersion, newVersion)
} else { } else {
logger.Log("version is %d\n", oldVersion) log.Printf("version is %d\n", oldVersion)
} }
// os.Exit(0) // os.Exit(0)
} }

View File

@@ -21,7 +21,6 @@ func main() {
doer := server.New(c) doer := server.New(c)
a := app.NewApp(doer) a := app.NewApp(doer)
a.RegisterPlugin(app.LoggerPlugin(cArr))
a.RegisterPlugin(app.CachePlugin(cArr)) a.RegisterPlugin(app.CachePlugin(cArr))
a.RegisterPlugin(app.DatabasePlugin(cArr)) a.RegisterPlugin(app.DatabasePlugin(cArr))

View File

@@ -1,11 +1,8 @@
package app package app
import ( import (
"log"
"os"
"time" "time"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd"
db "git.ego.freeddns.org/egommerce/identity-service/pkg/database" db "git.ego.freeddns.org/egommerce/identity-service/pkg/database"
redis "github.com/go-redis/redis/v8" redis "github.com/go-redis/redis/v8"
) )
@@ -69,24 +66,3 @@ func DatabasePlugin(cArr map[string]string) Plugin {
// }, // },
// } // }
// } // }
func LoggerPlugin(cArr map[string]string) Plugin {
return Plugin{
name: "logger",
fn: func() any { // FIXME: return type
logHost, logPort, err := fluentd.ParseAddr(cArr["loggerAddr"])
if err != nil {
log.Fatalf("Failed to parse FluentD address: %s. Err: %v", cArr["loggerAddr"], err)
os.Exit(1)
}
logger, err := fluentd.NewLogger(cArr["appFullname"], logHost, logPort)
if err != nil {
log.Fatalf("Failed to connect to the FluentD on %s:%d. Err: %v", logHost, logPort, err)
os.Exit(1)
}
return logger
},
}
}

View File

@@ -18,7 +18,6 @@ const (
defDbURL = "postgres://postgres:12345678@db-postgres:5432/egommerce" defDbURL = "postgres://postgres:12345678@db-postgres:5432/egommerce"
defEventBusURL = "amqp://guest:guest@api-eventbus:5672" defEventBusURL = "amqp://guest:guest@api-eventbus:5672"
defKVNmspc = "dev.egommerce/service/identity" defKVNmspc = "dev.egommerce/service/identity"
defLoggerAddr = "api-logger:24224"
defNetAddr = ":443" defNetAddr = ":443"
defMongoDbURL = "mongodb://mongodb:12345678@mongo-db:27017" defMongoDbURL = "mongodb://mongodb:12345678@mongo-db:27017"
defPathPrefix = "/identity" defPathPrefix = "/identity"
@@ -37,7 +36,6 @@ type Config struct {
ReadTimeout time.Duration // miliseconds ReadTimeout time.Duration // miliseconds
WriteTimeout time.Duration // miliseconds WriteTimeout time.Duration // miliseconds
LoggerAddr string `json:"logger_addr"`
DbURL string `json:"db_url"` DbURL string `json:"db_url"`
CacheAddr string `json:"cache_addr"` CacheAddr string `json:"cache_addr"`
CacheUsername string `json:"cache_username"` CacheUsername string `json:"cache_username"`
@@ -61,7 +59,6 @@ func NewConfig(name string) *Config {
c.DbURL = cnf.GetEnv("API_DATABASE_URL", defDbURL) c.DbURL = cnf.GetEnv("API_DATABASE_URL", defDbURL)
c.EventBusExchange = defEbEventsExchange c.EventBusExchange = defEbEventsExchange
c.EventBusURL = cnf.GetEnv("API_EVENTBUS_URL", defEventBusURL) c.EventBusURL = cnf.GetEnv("API_EVENTBUS_URL", defEventBusURL)
c.LoggerAddr = cnf.GetEnv("API_LOGGER_ADDR", defLoggerAddr)
c.PathPrefix = cnf.GetEnv("APP_PATH_PREFIX", defPathPrefix) c.PathPrefix = cnf.GetEnv("APP_PATH_PREFIX", defPathPrefix)
return c return c
@@ -96,7 +93,6 @@ func (c *Config) GetArray() map[string]string { // FIXME fix types etc
arr["dbURL"] = c.DbURL arr["dbURL"] = c.DbURL
arr["eventBusExchange"] = c.EventBusExchange arr["eventBusExchange"] = c.EventBusExchange
arr["eventBusURL"] = c.EventBusURL arr["eventBusURL"] = c.EventBusURL
arr["loggerAddr"] = c.LoggerAddr
return arr return arr
} }

View File

@@ -1,23 +1,15 @@
package server package server
import ( import (
dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto"
"git.ego.freeddns.org/egommerce/identity-service/internal/service" "git.ego.freeddns.org/egommerce/identity-service/internal/service"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
type AuthLoginRequest struct { func (s *Server) LoginHandlerFn(c *fiber.Ctx) error {
Username string `json:"username"` data := new(dto.AuthLoginRequestDTO)
Password string `json:"password"`
}
type AuthLoginResponse struct {
JWTToken string `json:"jwt_token"`
}
func (s *Server) LoginHandler(c *fiber.Ctx) error {
data := new(AuthLoginRequest)
if err := c.BodyParser(data); err != nil { if err := c.BodyParser(data); err != nil {
return err return s.Error(c, fiber.StatusBadRequest, "Error parsing input")
} }
token, err := service.AuthService.Login(data.Username, data.Password) token, err := service.AuthService.Login(data.Username, data.Password)
@@ -25,9 +17,5 @@ func (s *Server) LoginHandler(c *fiber.Ctx) error {
return fiber.NewError(fiber.StatusUnauthorized) return fiber.NewError(fiber.StatusUnauthorized)
} }
cookie := service.AuthService.Cookie("auth_token", token) return c.JSON(&dto.AuthLoginResponseDTO{Token: token})
// ^^ FIXME move cookkie creation to separate service
c.Cookie(cookie)
return c.JSON(&AuthLoginResponse{JWTToken: token})
} }

View File

@@ -19,7 +19,7 @@ func SetupRouter(s *Server) {
s.Get("/health", s.HealthHandler) s.Get("/health", s.HealthHandler)
api := s.Group("/api") s.Group("/v1").
v1 := api.Group("/v1") Post("/login", s.LoginHandlerFn).
v1.Post("/login", s.LoginHandler) Post("/register", s.RegisterHandlerFn)
} }

View File

@@ -10,8 +10,7 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"git.ego.freeddns.org/egommerce/api-entities/common/dto" dto "git.ego.freeddns.org/egommerce/api-entities/common/dto"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd"
) )
type ( type (
@@ -46,7 +45,6 @@ func (s *Server) Start() error {
SetupMiddleware(s) SetupMiddleware(s)
SetupRouter(s) SetupRouter(s)
// fmt.Printf("Starting server at: %s...\n", s.addr)
crt, err := tls.LoadX509KeyPair("certs/identity-svc.crt", "certs/identity-svc.key") crt, err := tls.LoadX509KeyPair("certs/identity-svc.crt", "certs/identity-svc.key")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@@ -65,12 +63,11 @@ func (s *Server) RegisterHandler(name string, fn func() any) {
} }
func (s *Server) OnShutdown() { func (s *Server) OnShutdown() {
s.GetLogger().Log("Server %s is going down...", s.ID) log.Printf("Server %s is going down...", s.ID)
// s.GetEventBus().Close() // s.GetEventBus().Close()
s.GetDatabase().Close() s.GetDatabase().Close()
s.GetLogger().Log("Gone.") log.Printf("Gone.")
s.GetLogger().Close()
s.Shutdown() s.Shutdown()
} }
@@ -100,7 +97,3 @@ func (s *Server) GetDatabase() *pgxpool.Pool { // FIXME hardcoded index issue
// func (s *Server) GetEventBus() *amqp.Channel { // func (s *Server) GetEventBus() *amqp.Channel {
// return (s.handlers["eventbus"]).(*amqp.Channel) // return (s.handlers["eventbus"]).(*amqp.Channel)
// } // }
func (s *Server) GetLogger() *fluentd.Logger {
return (s.handlers["logger"]).(*fluentd.Logger)
}

View File

@@ -2,10 +2,6 @@ package service
import ( import (
"errors" "errors"
"strconv"
baseCnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
"github.com/gofiber/fiber/v2"
) )
var ( var (
@@ -16,18 +12,14 @@ var (
) )
func init() { func init() {
cookieExpireTime, _ := strconv.Atoi(baseCnf.GetEnv("AUTH_COOKIE_EXPIRE_TIME", "5")) AuthService = &Auth{}
AuthService = &Auth{"jwt_token", "jwt_token_refresh", cookieExpireTime}
} }
type Auth struct { type Auth struct {
TokenCookieName string
RefreshTokenCookieName string
cookieExpireTime int
} }
func (a *Auth) Login(login, pass string) (string, error) { func (a *Auth) Login(login, passwd string) (string, error) {
if login == "admin" && pass == "secret" { if login == "admin" && passwd == "secret" { // FIXME hardcoded
token, err := JWTService.CreateToken() token, err := JWTService.CreateToken()
if err != nil { if err != nil {
return "", err return "", err
@@ -39,12 +31,7 @@ func (a *Auth) Login(login, pass string) (string, error) {
return "", ErrLoginIncorrect return "", ErrLoginIncorrect
} }
// Cookie create fiber.Cookie struct func (a *Auth) Register(email, login, passwd string) (string, error) {
func (a *Auth) Cookie(name, value string) *fiber.Cookie {
return &fiber.Cookie{ return "user-uuid", nil
Name: name,
Value: value,
MaxAge: a.cookieExpireTime * 300, // FIXME: env/config
Path: "/", // FIXME: env/config
}
} }

View File

@@ -32,6 +32,7 @@ func (s *JWT) CreateToken() (string, error) {
} }
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
return token.SignedString(s.tokenSecret) return token.SignedString(s.tokenSecret)
} }