From 2a9dfcf9984fd8f504e2d51ff357d80ce2060408 Mon Sep 17 00:00:00 2001 From: ostiwe Date: Wed, 20 Aug 2025 11:17:39 +0300 Subject: [PATCH] refactor: Provide context to user repository --- modules/auth/plain.go | 6 ++++-- repository/user.go | 14 ++++++++------ router/controller/auth/controller.go | 2 +- router/midlleware/user.go | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/auth/plain.go b/modules/auth/plain.go index 2a23398..f772787 100644 --- a/modules/auth/plain.go +++ b/modules/auth/plain.go @@ -1,6 +1,8 @@ package auth import ( + "context" + "git.ostiwe.com/ostiwe-com/status/modules/jwt" "git.ostiwe.com/ostiwe-com/status/repository" "golang.org/x/crypto/bcrypt" @@ -16,8 +18,8 @@ func New() Module { } } -func (m *Module) Proceed(login, password string) (*string, error) { - lightweightUser, err := m.userRepository.FindByLogin(login) +func (m *Module) Proceed(ctx context.Context, login, password string) (*string, error) { + lightweightUser, err := m.userRepository.FindByLogin(ctx, login) if err != nil { return nil, err } diff --git a/repository/user.go b/repository/user.go index dac30b3..f6a2c45 100644 --- a/repository/user.go +++ b/repository/user.go @@ -1,13 +1,15 @@ package repository import ( + "context" + "git.ostiwe.com/ostiwe-com/status/model" "git.ostiwe.com/ostiwe-com/status/modules/db" ) type User interface { - FindByLogin(login string) (*model.User, error) - FindByID(ID uint64) (*model.User, error) + FindByLogin(ctx context.Context, login string) (*model.User, error) + FindByID(ctx context.Context, ID uint64) (*model.User, error) } type userRepository struct { @@ -18,14 +20,14 @@ func NewUserRepository() User { return &userRepository{repository{db: db.Global}} } -func (u userRepository) FindByLogin(login string) (*model.User, error) { +func (u userRepository) FindByLogin(ctx context.Context, login string) (*model.User, error) { var user *model.User - return user, u.db.Find(&user, "login = ?", login).Error + return user, u.db.WithContext(ctx).Find(&user, "login = ?", login).Error } -func (u userRepository) FindByID(ID uint64) (*model.User, error) { +func (u userRepository) FindByID(ctx context.Context, ID uint64) (*model.User, error) { var user *model.User - return user, u.db.Find(&user, "id = ?", ID).Error + return user, u.db.WithContext(ctx).Find(&user, "id = ?", ID).Error } diff --git a/router/controller/auth/controller.go b/router/controller/auth/controller.go index 9807a40..f775447 100644 --- a/router/controller/auth/controller.go +++ b/router/controller/auth/controller.go @@ -35,7 +35,7 @@ func (c *Controller) plainLogin(w http.ResponseWriter, r *http.Request) { return } - jwtString, err := c.authModule.Proceed(payload.Login, payload.Password) + jwtString, err := c.authModule.Proceed(r.Context(), payload.Login, payload.Password) if err != nil { sendErr := httpApp.NewResponseErrBuilder().WithStatusCode(http.StatusBadRequest).WithMessage(err.Error()).Send(w, r) if sendErr != nil { diff --git a/router/midlleware/user.go b/router/midlleware/user.go index 9ea1dc8..8cf692f 100644 --- a/router/midlleware/user.go +++ b/router/midlleware/user.go @@ -19,7 +19,7 @@ func SetUserFromJWT(next http.Handler) http.Handler { } userRepo := repository.NewUserRepository() - user, err := userRepo.FindByLogin(token.Subject()) + user, err := userRepo.FindByLogin(ctx, token.Subject()) if err != nil || user == nil { w.WriteHeader(http.StatusUnauthorized)