diff --git a/internal/sms-gateway/handlers/mobile.go b/internal/sms-gateway/handlers/mobile.go index 194c285..e595e67 100644 --- a/internal/sms-gateway/handlers/mobile.go +++ b/internal/sms-gateway/handlers/mobile.go @@ -14,6 +14,7 @@ import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/limiter" "github.com/jaevor/go-nanoid" + "go.uber.org/fx" "go.uber.org/zap" ) @@ -182,16 +183,23 @@ func (h *mobileHandler) Register(router fiber.Router) { router.Patch("/message", h.authorize(h.patchMessage)) } -func newMobileHandler(logger *zap.Logger, validator *validator.Validate, authSvc *services.AuthService, messagesSvc *services.MessagesService) *mobileHandler { +type MobileHandlerParams struct { + fx.In + + Logger *zap.Logger + Validator *validator.Validate + + AuthSvc *services.AuthService + MessagesSvc *services.MessagesService +} + +func newMobileHandler(params MobileHandlerParams) *mobileHandler { idGen, _ := nanoid.Standard(21) return &mobileHandler{ - Handler: Handler{ - Logger: logger, - Validator: validator, - }, - authSvc: authSvc, - messagesSvc: messagesSvc, + Handler: Handler{Logger: params.Logger, Validator: params.Validator}, + authSvc: params.AuthSvc, + messagesSvc: params.MessagesSvc, idGen: idGen, } } diff --git a/internal/sms-gateway/services/auth.go b/internal/sms-gateway/services/auth.go index 6b916d5..515afb9 100644 --- a/internal/sms-gateway/services/auth.go +++ b/internal/sms-gateway/services/auth.go @@ -7,6 +7,7 @@ import ( "github.com/capcom6/sms-gateway/internal/sms-gateway/repositories" "github.com/capcom6/sms-gateway/pkg/crypto" "github.com/jaevor/go-nanoid" + "go.uber.org/fx" "go.uber.org/zap" ) @@ -74,13 +75,22 @@ func (s *AuthService) AuthorizeUser(username, password string) (models.User, err return user, crypto.CompareBCryptHash(user.PasswordHash, password) } -func NewAuthService(users *repositories.UsersRepository, devices *repositories.DevicesRepository, logger *zap.Logger) *AuthService { +type AuthServiceParams struct { + fx.In + + Users *repositories.UsersRepository + Devices *repositories.DevicesRepository + + Logger *zap.Logger +} + +func NewAuthService(params AuthServiceParams) *AuthService { idgen, _ := nanoid.Standard(21) return &AuthService{ - users: users, - devices: devices, - logger: logger.Named("AuthService"), + users: params.Users, + devices: params.Devices, + logger: params.Logger.Named("AuthService"), idgen: idgen, } }