From 1bedafd3de23ba6b4919d48c3ef380a6f9a5b190 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Thu, 4 Dec 2025 00:49:59 +0000 Subject: [PATCH] feat: add /users/me route --- apps/backend/internal/drexa/server.go | 1 + apps/backend/internal/user/http.go | 31 +++++++++++++++++++++++++++ apps/backend/internal/user/user.go | 4 ++-- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 apps/backend/internal/user/http.go diff --git a/apps/backend/internal/drexa/server.go b/apps/backend/internal/drexa/server.go index ad34cff..1e26d81 100644 --- a/apps/backend/internal/drexa/server.go +++ b/apps/backend/internal/drexa/server.go @@ -98,6 +98,7 @@ func NewServer(c Config) (*Server, error) { api := app.Group("/api") auth.NewHTTPHandler(authService, db, cookieConfig).RegisterRoutes(api) + user.NewHTTPHandler(userService, db, authMiddleware).RegisterRoutes(api) accountRouter := account.NewHTTPHandler(accountService, authService, db, authMiddleware).RegisterRoutes(api) upload.NewHTTPHandler(uploadService, db).RegisterRoutes(accountRouter) diff --git a/apps/backend/internal/user/http.go b/apps/backend/internal/user/http.go new file mode 100644 index 0000000..bebfd79 --- /dev/null +++ b/apps/backend/internal/user/http.go @@ -0,0 +1,31 @@ +package user + +import ( + "github.com/get-drexa/drexa/internal/reqctx" + "github.com/gofiber/fiber/v2" + "github.com/uptrace/bun" +) + +type HTTPHandler struct { + service *Service + db *bun.DB + authMiddleware fiber.Handler +} + +func NewHTTPHandler(service *Service, db *bun.DB, authMiddleware fiber.Handler) *HTTPHandler { + return &HTTPHandler{service: service, db: db, authMiddleware: authMiddleware} +} + +func (h *HTTPHandler) RegisterRoutes(api fiber.Router) { + user := api.Group("/users") + user.Use(h.authMiddleware) + user.Get("/me", h.getAuthenticatedUser) +} + +func (h *HTTPHandler) getAuthenticatedUser(c *fiber.Ctx) error { + u := reqctx.AuthenticatedUser(c).(*User) + if u == nil { + return c.SendStatus(fiber.StatusUnauthorized) + } + return c.JSON(u) +} diff --git a/apps/backend/internal/user/user.go b/apps/backend/internal/user/user.go index 63c88cb..d6e3f71 100644 --- a/apps/backend/internal/user/user.go +++ b/apps/backend/internal/user/user.go @@ -15,8 +15,8 @@ type User struct { DisplayName string `bun:"display_name" json:"displayName"` Email string `bun:"email,unique,notnull" json:"email"` Password password.Hashed `bun:"password,notnull" json:"-"` - CreatedAt time.Time `bun:"created_at,notnull,nullzero" json:"createdAt"` - UpdatedAt time.Time `bun:"updated_at,notnull,nullzero" json:"updatedAt"` + CreatedAt time.Time `bun:"created_at,notnull,nullzero" json:"-"` + UpdatedAt time.Time `bun:"updated_at,notnull,nullzero" json:"-"` } func newUserID() (uuid.UUID, error) {