diff --git a/internal/server/api/accounts/router.go b/internal/server/api/accounts/router.go index 25b5a54..4b290f0 100644 --- a/internal/server/api/accounts/router.go +++ b/internal/server/api/accounts/router.go @@ -4,17 +4,20 @@ import ( "errors" "fmt" "net/http" - "ruben/inventory2/internal/consts" - "ruben/inventory2/internal/domains/accounts" - "ruben/inventory2/internal/logging" - "ruben/inventory2/internal/server/middleware" - "ruben/inventory2/internal/server/response" - "ruben/inventory2/internal/server/sse" "strconv" "github.com/gin-gonic/gin" + + "ruben/inventory2/internal/consts" + "ruben/inventory2/internal/domains/accounts" + "ruben/inventory2/internal/logging" + "ruben/inventory2/internal/server/auth" + "ruben/inventory2/internal/server/response" + "ruben/inventory2/internal/server/sse" ) +// TODO: use the auth middleware better? + type accountSubrouter struct { log *logging.Logger accts *accounts.Store @@ -50,7 +53,7 @@ func (s *accountSubrouter) createAccount(c *gin.Context) (response.Response, err return nil, response.BadRequest().Msg("no email provided") } - userID := middleware.GetIdentity(ctx).User.UserID + userID := auth.GetIdentity(ctx).User.UserID acct, err := s.accts.CreateAccount(ctx, userID, email) if err != nil { @@ -68,7 +71,7 @@ func (s *accountSubrouter) createAccount(c *gin.Context) (response.Response, err func (s *accountSubrouter) createSyncGroupListingDraft(c *gin.Context) (response.Response, error) { r := c.Request ctx := r.Context() - acctID := middleware.GetIdentity(ctx).Account.AccountID + acctID := auth.GetIdentity(ctx).Account.AccountID if _, err := s.accts.CreateSyncGroupListingDraft(ctx, acctID); err != nil { return nil, response.Errorf("failed to create new listing draft: %w", err) @@ -86,7 +89,7 @@ func (s *accountSubrouter) createSyncGroupListingDraft(c *gin.Context) (response func (s *accountSubrouter) setShopInSyncGroupListingDraft(c *gin.Context) (response.Response, error) { r := c.Request ctx := r.Context() - acctID := middleware.GetIdentity(ctx).Account.AccountID + acctID := auth.GetIdentity(ctx).Account.AccountID orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c) if err != nil { @@ -120,7 +123,7 @@ func (s *accountSubrouter) setShopInSyncGroupListingDraft(c *gin.Context) (respo func (s *accountSubrouter) setListingInSyncGroupListingDraft(c *gin.Context) (response.Response, error) { r := c.Request ctx := r.Context() - acctID := middleware.GetIdentity(ctx).Account.AccountID + acctID := auth.GetIdentity(ctx).Account.AccountID orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c) if err != nil { @@ -147,7 +150,7 @@ func (s *accountSubrouter) setListingInSyncGroupListingDraft(c *gin.Context) (re func (s *accountSubrouter) deleteSyncGroupListingDraft(c *gin.Context) (response.Response, error) { r := c.Request ctx := r.Context() - acctID := middleware.GetIdentity(ctx).Account.AccountID + acctID := auth.GetIdentity(ctx).Account.AccountID orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c) if err != nil { @@ -168,7 +171,7 @@ func (s *accountSubrouter) deleteSyncGroupListingDraft(c *gin.Context) (response func (s *accountSubrouter) saveNewSyncGroup(c *gin.Context) (response.Response, error) { r := c.Request ctx := r.Context() - acctID := middleware.GetIdentity(ctx).Account.AccountID + acctID := auth.GetIdentity(ctx).Account.AccountID grp, err := s.accts.SaveNewSyncGroup(ctx, acctID) if err != nil { diff --git a/internal/server/api/apis.go b/internal/server/api/apis.go index eb1d4eb..de17503 100644 --- a/internal/server/api/apis.go +++ b/internal/server/api/apis.go @@ -12,14 +12,14 @@ import ( sse_api "ruben/inventory2/internal/server/api/sse" "ruben/inventory2/internal/server/api/webhooks" etsy_webhooks "ruben/inventory2/internal/server/api/webhooks/etsy" - "ruben/inventory2/internal/server/middleware" + "ruben/inventory2/internal/server/auth" "ruben/inventory2/internal/server/sse" ) func Routes( r *gin.RouterGroup, logger *logging.Logger, - auth *middleware.Auth, + auth *auth.Auth, sq *sse.Queue, accts *accounts.Store, unp *sse.UpdateNotificationPublisher, diff --git a/internal/server/api/sse/router.go b/internal/server/api/sse/router.go index e8fd586..9e1aa7d 100644 --- a/internal/server/api/sse/router.go +++ b/internal/server/api/sse/router.go @@ -2,13 +2,14 @@ package sse import ( "context" - "ruben/inventory2/internal/logging" - "ruben/inventory2/internal/server/middleware" - "ruben/inventory2/internal/server/response" - "ruben/inventory2/internal/server/sse" "sync" "github.com/gin-gonic/gin" + + "ruben/inventory2/internal/logging" + "ruben/inventory2/internal/server/auth" + "ruben/inventory2/internal/server/response" + "ruben/inventory2/internal/server/sse" ) const ( @@ -40,7 +41,7 @@ func Routes( } func (r *sseRouter) serveEvents(c *gin.Context) (response.Response, error) { - acct := middleware.GetIdentity(c).Account + acct := auth.GetIdentity(c).Account acctID := acct.AccountID userID := acct.UserID email := acct.Email diff --git a/internal/server/middleware/auth.go b/internal/server/auth/auth.go similarity index 99% rename from internal/server/middleware/auth.go rename to internal/server/auth/auth.go index 911af10..4161bea 100644 --- a/internal/server/middleware/auth.go +++ b/internal/server/auth/auth.go @@ -1,4 +1,4 @@ -package middleware +package auth import ( "bytes" diff --git a/internal/server/server.go b/internal/server/server.go index ef34312..43c0dd9 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -14,7 +14,7 @@ import ( "ruben/inventory2/internal/domains/raw_events" "ruben/inventory2/internal/logging" "ruben/inventory2/internal/server/api" - "ruben/inventory2/internal/server/middleware" + "ruben/inventory2/internal/server/auth" "ruben/inventory2/internal/server/response" "ruben/inventory2/internal/server/sse" "ruben/inventory2/internal/server/ui" @@ -31,11 +31,11 @@ func NewRouter( rawEvents *raw_events.Store, accts *accounts.Store, etsy *etsy_platform.Platform, - auth *authentication.Authenticator, + authr *authentication.Authenticator, ) *Router { - authM := middleware.NewAuth( + authM := auth.NewAuth( logger.WithGroup("auth-middleware"), - auth, + authr, accts, ) @@ -82,7 +82,7 @@ func NewRouter( unp := sq.NewUpdateNotificationPublisher( logger.WithGroup("update.notification.publisher"), func(c *gin.Context) int64 { - return middleware.GetIdentity(c).Account.AccountID + return auth.GetIdentity(c).Account.AccountID }, ).Trim("/api") diff --git a/internal/server/ui/router.go b/internal/server/ui/router.go index 2c71892..2edfded 100644 --- a/internal/server/ui/router.go +++ b/internal/server/ui/router.go @@ -14,7 +14,7 @@ import ( etsy_platform "ruben/inventory2/internal/domains/platforms/etsy" "ruben/inventory2/internal/domains/raw_events" "ruben/inventory2/internal/logging" - "ruben/inventory2/internal/server/middleware" + "ruben/inventory2/internal/server/auth" "ruben/inventory2/internal/server/response" "github.com/angelbeltran/templater" @@ -124,7 +124,7 @@ func (s *webpageRouter) serveTemplate(c *gin.Context) (response.Response, error) // auth tooling "Identity", - middleware.GetIdentity(ctx), + auth.GetIdentity(ctx), "Auth", newTemplateAuthenticator(r), } @@ -218,7 +218,7 @@ func authorizeByMatchingAccountID(r *http.Request, acctIDPathPosition int) error Msgf("account does not exist: %s", part) } - id := middleware.GetIdentity(r.Context()) + id := auth.GetIdentity(r.Context()) if id.Account == nil || id.Account.AccountID != acctID { return response.Unauthorized(). Msgf("user does not have access to account %d", acctID)