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/pg/v10"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd"
baseCnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
cnf "git.ego.freeddns.org/egommerce/identity-service/internal/server"
cnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
)
const (
@@ -39,49 +36,39 @@ func main() {
}
flag.Parse()
if baseCnf.ErrLoadingEnvs != nil {
log.Panicln(baseCnf.ErrLoadingEnvs)
if cnf.ErrLoadingEnvs != nil {
log.Panicln(cnf.ErrLoadingEnvs)
}
c := cnf.NewConfig("migrator")
// c := cnf.NewConfig("migrator")
// 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
Addr: "db:5432",
User: "egommerce",
Addr: "db-postgres:5432",
User: "postgres",
Password: "12345678",
Database: "egommerce",
})
defer db.Close()
mTbl := baseCnf.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName)
mTbl := cnf.GetEnv("MIGRATIONS_TABLE_NAME", defMigrationsTableName)
mig := migrations.NewCollection()
mig.SetTableName(mTbl)
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()...)
if err != nil {
logger.Log("migration runner error: %#v", err)
log.Printf("migration runner error: %#v", err)
os.Exit(1)
}
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 {
logger.Log("version is %d\n", oldVersion)
log.Printf("version is %d\n", oldVersion)
}
// os.Exit(0)
}

View File

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

View File

@@ -1,11 +1,8 @@
package app
import (
"log"
"os"
"time"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd"
db "git.ego.freeddns.org/egommerce/identity-service/pkg/database"
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"
defEventBusURL = "amqp://guest:guest@api-eventbus:5672"
defKVNmspc = "dev.egommerce/service/identity"
defLoggerAddr = "api-logger:24224"
defNetAddr = ":443"
defMongoDbURL = "mongodb://mongodb:12345678@mongo-db:27017"
defPathPrefix = "/identity"
@@ -37,7 +36,6 @@ type Config struct {
ReadTimeout time.Duration // miliseconds
WriteTimeout time.Duration // miliseconds
LoggerAddr string `json:"logger_addr"`
DbURL string `json:"db_url"`
CacheAddr string `json:"cache_addr"`
CacheUsername string `json:"cache_username"`
@@ -61,7 +59,6 @@ func NewConfig(name string) *Config {
c.DbURL = cnf.GetEnv("API_DATABASE_URL", defDbURL)
c.EventBusExchange = defEbEventsExchange
c.EventBusURL = cnf.GetEnv("API_EVENTBUS_URL", defEventBusURL)
c.LoggerAddr = cnf.GetEnv("API_LOGGER_ADDR", defLoggerAddr)
c.PathPrefix = cnf.GetEnv("APP_PATH_PREFIX", defPathPrefix)
return c
@@ -96,7 +93,6 @@ func (c *Config) GetArray() map[string]string { // FIXME fix types etc
arr["dbURL"] = c.DbURL
arr["eventBusExchange"] = c.EventBusExchange
arr["eventBusURL"] = c.EventBusURL
arr["loggerAddr"] = c.LoggerAddr
return arr
}

View File

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

View File

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

View File

@@ -10,8 +10,7 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/jackc/pgx/v5/pgxpool"
"git.ego.freeddns.org/egommerce/api-entities/common/dto"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd"
dto "git.ego.freeddns.org/egommerce/api-entities/common/dto"
)
type (
@@ -46,7 +45,6 @@ func (s *Server) Start() error {
SetupMiddleware(s)
SetupRouter(s)
// fmt.Printf("Starting server at: %s...\n", s.addr)
crt, err := tls.LoadX509KeyPair("certs/identity-svc.crt", "certs/identity-svc.key")
if err != nil {
log.Fatal(err)
@@ -65,12 +63,11 @@ func (s *Server) RegisterHandler(name string, fn func() any) {
}
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.GetDatabase().Close()
s.GetLogger().Log("Gone.")
s.GetLogger().Close()
log.Printf("Gone.")
s.Shutdown()
}
@@ -100,7 +97,3 @@ func (s *Server) GetDatabase() *pgxpool.Pool { // FIXME hardcoded index issue
// func (s *Server) GetEventBus() *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 (
"errors"
"strconv"
baseCnf "git.ego.freeddns.org/egommerce/go-api-pkg/config"
"github.com/gofiber/fiber/v2"
)
var (
@@ -16,18 +12,14 @@ var (
)
func init() {
cookieExpireTime, _ := strconv.Atoi(baseCnf.GetEnv("AUTH_COOKIE_EXPIRE_TIME", "5"))
AuthService = &Auth{"jwt_token", "jwt_token_refresh", cookieExpireTime}
AuthService = &Auth{}
}
type Auth struct {
TokenCookieName string
RefreshTokenCookieName string
cookieExpireTime int
}
func (a *Auth) Login(login, pass string) (string, error) {
if login == "admin" && pass == "secret" {
func (a *Auth) Login(login, passwd string) (string, error) {
if login == "admin" && passwd == "secret" { // FIXME hardcoded
token, err := JWTService.CreateToken()
if err != nil {
return "", err
@@ -39,12 +31,7 @@ func (a *Auth) Login(login, pass string) (string, error) {
return "", ErrLoginIncorrect
}
// Cookie create fiber.Cookie struct
func (a *Auth) Cookie(name, value string) *fiber.Cookie {
return &fiber.Cookie{
Name: name,
Value: value,
MaxAge: a.cookieExpireTime * 300, // FIXME: env/config
Path: "/", // FIXME: env/config
}
func (a *Auth) Register(email, login, passwd string) (string, error) {
return "user-uuid", nil
}

View File

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