moved middleware auth to auth package
This commit is contained in:
@@ -4,17 +4,20 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"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"
|
"strconv"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"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 {
|
type accountSubrouter struct {
|
||||||
log *logging.Logger
|
log *logging.Logger
|
||||||
accts *accounts.Store
|
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")
|
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)
|
acct, err := s.accts.CreateAccount(ctx, userID, email)
|
||||||
if err != nil {
|
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) {
|
func (s *accountSubrouter) createSyncGroupListingDraft(c *gin.Context) (response.Response, error) {
|
||||||
r := c.Request
|
r := c.Request
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
acctID := middleware.GetIdentity(ctx).Account.AccountID
|
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||||
|
|
||||||
if _, err := s.accts.CreateSyncGroupListingDraft(ctx, acctID); err != nil {
|
if _, err := s.accts.CreateSyncGroupListingDraft(ctx, acctID); err != nil {
|
||||||
return nil, response.Errorf("failed to create new listing draft: %w", err)
|
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) {
|
func (s *accountSubrouter) setShopInSyncGroupListingDraft(c *gin.Context) (response.Response, error) {
|
||||||
r := c.Request
|
r := c.Request
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
acctID := middleware.GetIdentity(ctx).Account.AccountID
|
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||||
|
|
||||||
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
||||||
if err != nil {
|
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) {
|
func (s *accountSubrouter) setListingInSyncGroupListingDraft(c *gin.Context) (response.Response, error) {
|
||||||
r := c.Request
|
r := c.Request
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
acctID := middleware.GetIdentity(ctx).Account.AccountID
|
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||||
|
|
||||||
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
||||||
if err != nil {
|
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) {
|
func (s *accountSubrouter) deleteSyncGroupListingDraft(c *gin.Context) (response.Response, error) {
|
||||||
r := c.Request
|
r := c.Request
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
acctID := middleware.GetIdentity(ctx).Account.AccountID
|
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||||
|
|
||||||
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
orderIndex, err := getOrderIndexForSyncGroupListingDraftFromPath(c)
|
||||||
if err != nil {
|
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) {
|
func (s *accountSubrouter) saveNewSyncGroup(c *gin.Context) (response.Response, error) {
|
||||||
r := c.Request
|
r := c.Request
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
acctID := middleware.GetIdentity(ctx).Account.AccountID
|
acctID := auth.GetIdentity(ctx).Account.AccountID
|
||||||
|
|
||||||
grp, err := s.accts.SaveNewSyncGroup(ctx, acctID)
|
grp, err := s.accts.SaveNewSyncGroup(ctx, acctID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ import (
|
|||||||
sse_api "ruben/inventory2/internal/server/api/sse"
|
sse_api "ruben/inventory2/internal/server/api/sse"
|
||||||
"ruben/inventory2/internal/server/api/webhooks"
|
"ruben/inventory2/internal/server/api/webhooks"
|
||||||
etsy_webhooks "ruben/inventory2/internal/server/api/webhooks/etsy"
|
etsy_webhooks "ruben/inventory2/internal/server/api/webhooks/etsy"
|
||||||
"ruben/inventory2/internal/server/middleware"
|
"ruben/inventory2/internal/server/auth"
|
||||||
"ruben/inventory2/internal/server/sse"
|
"ruben/inventory2/internal/server/sse"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Routes(
|
func Routes(
|
||||||
r *gin.RouterGroup,
|
r *gin.RouterGroup,
|
||||||
logger *logging.Logger,
|
logger *logging.Logger,
|
||||||
auth *middleware.Auth,
|
auth *auth.Auth,
|
||||||
sq *sse.Queue,
|
sq *sse.Queue,
|
||||||
accts *accounts.Store,
|
accts *accounts.Store,
|
||||||
unp *sse.UpdateNotificationPublisher,
|
unp *sse.UpdateNotificationPublisher,
|
||||||
|
|||||||
@@ -2,13 +2,14 @@ package sse
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"ruben/inventory2/internal/logging"
|
|
||||||
"ruben/inventory2/internal/server/middleware"
|
|
||||||
"ruben/inventory2/internal/server/response"
|
|
||||||
"ruben/inventory2/internal/server/sse"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"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 (
|
const (
|
||||||
@@ -40,7 +41,7 @@ func Routes(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *sseRouter) serveEvents(c *gin.Context) (response.Response, error) {
|
func (r *sseRouter) serveEvents(c *gin.Context) (response.Response, error) {
|
||||||
acct := middleware.GetIdentity(c).Account
|
acct := auth.GetIdentity(c).Account
|
||||||
acctID := acct.AccountID
|
acctID := acct.AccountID
|
||||||
userID := acct.UserID
|
userID := acct.UserID
|
||||||
email := acct.Email
|
email := acct.Email
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package middleware
|
package auth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
"ruben/inventory2/internal/domains/raw_events"
|
"ruben/inventory2/internal/domains/raw_events"
|
||||||
"ruben/inventory2/internal/logging"
|
"ruben/inventory2/internal/logging"
|
||||||
"ruben/inventory2/internal/server/api"
|
"ruben/inventory2/internal/server/api"
|
||||||
"ruben/inventory2/internal/server/middleware"
|
"ruben/inventory2/internal/server/auth"
|
||||||
"ruben/inventory2/internal/server/response"
|
"ruben/inventory2/internal/server/response"
|
||||||
"ruben/inventory2/internal/server/sse"
|
"ruben/inventory2/internal/server/sse"
|
||||||
"ruben/inventory2/internal/server/ui"
|
"ruben/inventory2/internal/server/ui"
|
||||||
@@ -31,11 +31,11 @@ func NewRouter(
|
|||||||
rawEvents *raw_events.Store,
|
rawEvents *raw_events.Store,
|
||||||
accts *accounts.Store,
|
accts *accounts.Store,
|
||||||
etsy *etsy_platform.Platform,
|
etsy *etsy_platform.Platform,
|
||||||
auth *authentication.Authenticator,
|
authr *authentication.Authenticator,
|
||||||
) *Router {
|
) *Router {
|
||||||
authM := middleware.NewAuth(
|
authM := auth.NewAuth(
|
||||||
logger.WithGroup("auth-middleware"),
|
logger.WithGroup("auth-middleware"),
|
||||||
auth,
|
authr,
|
||||||
accts,
|
accts,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ func NewRouter(
|
|||||||
unp := sq.NewUpdateNotificationPublisher(
|
unp := sq.NewUpdateNotificationPublisher(
|
||||||
logger.WithGroup("update.notification.publisher"),
|
logger.WithGroup("update.notification.publisher"),
|
||||||
func(c *gin.Context) int64 {
|
func(c *gin.Context) int64 {
|
||||||
return middleware.GetIdentity(c).Account.AccountID
|
return auth.GetIdentity(c).Account.AccountID
|
||||||
},
|
},
|
||||||
).Trim("/api")
|
).Trim("/api")
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
etsy_platform "ruben/inventory2/internal/domains/platforms/etsy"
|
etsy_platform "ruben/inventory2/internal/domains/platforms/etsy"
|
||||||
"ruben/inventory2/internal/domains/raw_events"
|
"ruben/inventory2/internal/domains/raw_events"
|
||||||
"ruben/inventory2/internal/logging"
|
"ruben/inventory2/internal/logging"
|
||||||
"ruben/inventory2/internal/server/middleware"
|
"ruben/inventory2/internal/server/auth"
|
||||||
"ruben/inventory2/internal/server/response"
|
"ruben/inventory2/internal/server/response"
|
||||||
|
|
||||||
"github.com/angelbeltran/templater"
|
"github.com/angelbeltran/templater"
|
||||||
@@ -124,7 +124,7 @@ func (s *webpageRouter) serveTemplate(c *gin.Context) (response.Response, error)
|
|||||||
|
|
||||||
// auth tooling
|
// auth tooling
|
||||||
"Identity",
|
"Identity",
|
||||||
middleware.GetIdentity(ctx),
|
auth.GetIdentity(ctx),
|
||||||
"Auth",
|
"Auth",
|
||||||
newTemplateAuthenticator(r),
|
newTemplateAuthenticator(r),
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ func authorizeByMatchingAccountID(r *http.Request, acctIDPathPosition int) error
|
|||||||
Msgf("account does not exist: %s", part)
|
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 {
|
if id.Account == nil || id.Account.AccountID != acctID {
|
||||||
return response.Unauthorized().
|
return response.Unauthorized().
|
||||||
Msgf("user does not have access to account %d", acctID)
|
Msgf("user does not have access to account %d", acctID)
|
||||||
|
|||||||
Reference in New Issue
Block a user