Refactor
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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})
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ func (s *JWT) CreateToken() (string, error) {
|
||||
}
|
||||
|
||||
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
||||
|
||||
return token.SignedString(s.tokenSecret)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user