Skip to content

Commit 41d1a5c

Browse files
committed
refactor: add user data to context from auth middleware
1 parent 905edb8 commit 41d1a5c

9 files changed

Lines changed: 20 additions & 43 deletions

File tree

app/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func InitApp(
4949
// usecase
5050
userUsecase := users.InitUsecase(cfg, userRepo, dbTx, jwtInstance)
5151
newsletterUC := newsletters.InitUsecase(cfg, newsletterRepo, dbTx, jwt.NewJwt(cfg.JWT_SECRET_KEY))
52-
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx, jwtInstance)
52+
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx)
5353
imgUc := images.InitUsecase(imgRepo, dbTx)
5454
blogPostUc := blogPost.InitUseCase(blogPostRepo, jwtInstance)
5555

app/events/delivery/http/list_registration.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
3434
}, w)
3535
return
3636
}
37-
token := utils.ExtractBearerToken(r)
38-
3937
startDate, _ := utils.ParseDate(r.URL.Query().Get("start_date"))
4038
endDate, _ := utils.ParseDate(r.URL.Query().Get("end_date"))
4139

@@ -44,7 +42,7 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
4442
StartDate: startDate,
4543
EndDate: endDate,
4644
FilterPagination: flterPagination,
47-
}, *token)
45+
})
4846

4947
if err != nil {
5048
ngelog.Error(r.Context(), "failed to list registration event", err)

app/events/delivery/http/register_event.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,6 @@ func (h Handler) RegisterEvent(w http.ResponseWriter, r *http.Request) {
3232
return
3333
}
3434

35-
token := utils.ExtractBearerToken(r)
36-
37-
if err != nil {
38-
ngelog.Error(r.Context(), "failed to verify token", err)
39-
utils.Response(domain.HttpResponse{
40-
Code: http.StatusUnauthorized,
41-
Message: "Unauthorized",
42-
}, w)
43-
return
44-
}
45-
4635
var payload domain.RegisterEventPayload
4736
if err := json.Unmarshal(bodyBytes, &payload); err != nil {
4837
ngelog.Error(r.Context(), "failed to unmarshal payload", err)
@@ -52,7 +41,7 @@ func (h Handler) RegisterEvent(w http.ResponseWriter, r *http.Request) {
5241
}, w)
5342
return
5443
}
55-
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload, *token)
44+
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload)
5645
if err != nil {
5746
ngelog.Error(r.Context(), "failed to create registration event", err)
5847
resp := utils.CustomErrorResponse(err)

app/events/events.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@ import (
88
"github.com/hammer-code/lms-be/config"
99
"github.com/hammer-code/lms-be/domain"
1010
"github.com/hammer-code/lms-be/pkg/db"
11-
"github.com/hammer-code/lms-be/pkg/jwt"
1211
)
1312

1413
func InitRepository(db db.DatabaseTransaction) domain.EventRepository {
1514
return repository.NewRepository(db)
1615
}
1716

18-
func InitUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction, jwt jwt.JWT) domain.EventUsecase {
19-
return usecase.NewUsecase(cfg, repository, imageRepository, dbTX, jwt)
17+
func InitUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction) domain.EventUsecase {
18+
return usecase.NewUsecase(cfg, repository, imageRepository, dbTX)
2019
}
2120

2221
func InitHandler(uc domain.EventUsecase) domain.EventHandler {

app/events/usecase/create_registration_event.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"gopkg.in/guregu/null.v4"
1919
)
2020

21-
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload, token string) (domain.RegisterEventResponse, error) {
21+
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
2222
event, err := uc.repository.GetEvent(ctx, payload.EventID)
2323
if err != nil {
2424
err = utils.NewInternalServerError(ctx, err)
@@ -59,13 +59,11 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
5959
}
6060
}
6161

62+
// get user data from context
63+
userData := ctx.Value(contextkey.UserKey).(domain.User)
64+
6265
// generate order number
6366
// format: TXE-<event_id>-<year><month><day><hash
64-
userData, err := uc.jwt.VerifyToken(token)
65-
if err != nil {
66-
return domain.RegisterEventResponse{}, fmt.Errorf("failed to verify token: %w", err)
67-
}
68-
6967
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
7068

7169
orderNo := fmt.Sprintf("TXE-%d-%s%s%s%s", event.ID, time.Now().Format("06"), time.Now().Format("01"), time.Now().Format("02"), hash[0:4])
@@ -111,7 +109,7 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
111109
email.Receiver{
112110
Email: userData.Email,
113111
Data: map[string]interface{}{
114-
"name": userData.UserName,
112+
"name": userData.Username,
115113
"title": event.Title,
116114
"price": event.Price,
117115
"email": userData.Email,
@@ -153,14 +151,13 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
153151
}
154152

155153
err = uc.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
156-
uid := ctx.Value(contextkey.UserKey).(int)
157-
strUid := strconv.Itoa(uid)
154+
158155

159156
rId, err := uc.repository.CreateRegistrationEvent(txCtx, domain.RegistrationEvent{
160157
OrderNo: orderNo,
161-
UserID: strUid,
158+
UserID: strconv.Itoa(userData.ID),
162159
EventID: event.ID,
163-
Name: userData.UserName,
160+
Name: userData.Username,
164161
Email: userData.Email,
165162
PhoneNumber: payload.PhoneNumber,
166163
Status: status,

app/events/usecase/list_registration_event.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@ import (
66

77
"github.com/hammer-code/lms-be/config"
88
"github.com/hammer-code/lms-be/domain"
9+
contextkey "github.com/hammer-code/lms-be/pkg/context_key"
910
"github.com/hammer-code/lms-be/utils"
1011
)
1112

12-
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter, token string) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
13-
14-
userData, err := uc.jwt.VerifyToken(token)
15-
if err != nil {
16-
return nil, domain.Pagination{}, utils.NewUnauthorizedError(ctx, "unauthorized", err)
17-
}
13+
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
14+
userData := ctx.Value(contextkey.UserKey).(domain.User)
1815

1916
tData, datas, err := uc.repository.ListRegistration(ctx, filter, userData.Email)
2017
if err != nil {

app/events/usecase/usecase.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,26 @@ import (
44
"github.com/hammer-code/lms-be/config"
55
"github.com/hammer-code/lms-be/domain"
66
"github.com/hammer-code/lms-be/pkg/db"
7-
"github.com/hammer-code/lms-be/pkg/jwt"
87
)
98

109
type usecase struct {
1110
repository domain.EventRepository
1211
imageRepository domain.ImageRepository
1312
cfg config.Config
1413
dbTX db.DatabaseTransaction
15-
jwt jwt.JWT
1614
}
1715

1816
var (
1917
uc *usecase
2018
)
2119

22-
func NewUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction, jwt jwt.JWT) domain.EventUsecase {
20+
func NewUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction) domain.EventUsecase {
2321
if uc == nil {
2422
uc = &usecase{
2523
repository: repository,
2624
imageRepository: imageRepository,
2725
dbTX: dbTX,
2826
cfg: cfg,
29-
jwt: jwt,
3027
}
3128
}
3229

app/middlewares/auth_middleware.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (m *Middleware) AuthMiddleware(allowedRole string) domain.MiddlewareFunc {
8383
writer.Header().Set("x-user-id", strconv.Itoa(user.ID))
8484
writer.Header().Set("x-username", user.Username)
8585

86-
ctxUser := context.WithValue(request.Context(), contextkey.UserKey, user.ID)
86+
ctxUser := context.WithValue(request.Context(), contextkey.UserKey, user)
8787
request = request.WithContext(ctxUser)
8888

8989
next.ServeHTTP(writer, request)

domain/event.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ type EventUsecase interface {
3434
CreateEvent(ctx context.Context, payload CreateEventPayload) error
3535
UpdateEvent(ctx context.Context, id uint, payload UpdateEventPayload) error
3636
GetEvents(ctx context.Context, filter EventFilter) (data []Event, pagination Pagination, err error)
37-
CreateRegistrationEvent(ctx context.Context, payload RegisterEventPayload, token string) (RegisterEventResponse, error)
37+
CreateRegistrationEvent(ctx context.Context, payload RegisterEventPayload) (RegisterEventResponse, error)
3838
CreateEventPay(ctx context.Context, payload EventPayPayload) error
3939
GetEventByID(ctx context.Context, id uint) (resp Event, err error)
4040
DeleteEvent(ctx context.Context, id uint) (err error)
4141
RegistrationStatus(ctx context.Context, orderNo string) (resp RegisterStatusResponse, err error)
42-
ListRegistration(ctx context.Context, filter EventFilter, token string) (resp []RegistrationEvent, pagination Pagination, err error)
42+
ListRegistration(ctx context.Context, filter EventFilter) (resp []RegistrationEvent, pagination Pagination, err error)
4343
ListEventPay(ctx context.Context, filter EventFilter) (data []EventPay, pagination Pagination, err error)
4444
PayProcess(ctx context.Context, payload PayProcessPayload) error
4545
}

0 commit comments

Comments
 (0)