From 0326e90c1b6d1756e0f240c7668b9ba214c7f9f1 Mon Sep 17 00:00:00 2001 From: Elisiei Yehorov Date: Fri, 17 Apr 2026 22:22:52 +0200 Subject: [PATCH] refactor: auth --- internal/bot/bot.go | 1 + internal/bot/router.go | 6 ++++-- internal/middleware/auth.go | 10 ++++++++-- internal/server/server.go | 1 - 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/internal/bot/bot.go b/internal/bot/bot.go index 6d0db33..add1b40 100644 --- a/internal/bot/bot.go +++ b/internal/bot/bot.go @@ -75,6 +75,7 @@ func (s *Service) List( Status: db.BotStatusApproved, Limit: p.Limit, Offset: p.Offset, + // todo: query }) if err != nil { slog.Error("error listing bots", "query", query, "err", err) diff --git a/internal/bot/router.go b/internal/bot/router.go index 603f5fe..50a0651 100644 --- a/internal/bot/router.go +++ b/internal/bot/router.go @@ -2,6 +2,7 @@ package bot import ( "context" + "errors" "net/http" "codeberg.org/nextgo/dbots/internal/db" @@ -52,9 +53,10 @@ func (r *Router) submitBot(w http.ResponseWriter, req *http.Request) { ctx := req.Context() bot, err := r.bots.Submit(ctx, *data) - if err != nil { + if errors.Is(err, errorutil.ErrBotAlreadyExists) { render.Render(w, req, errorutil.ErrInvalidRequest(err)) - return + } else { + render.Render(w, req, errorutil.ErrInternal(err)) } render.Status(req, http.StatusCreated) diff --git a/internal/middleware/auth.go b/internal/middleware/auth.go index b6975cf..ab81ea3 100644 --- a/internal/middleware/auth.go +++ b/internal/middleware/auth.go @@ -12,7 +12,8 @@ import ( type contextKey string -var userKey contextKey = "user" +const userKey contextKey = "user" + var mainUserID = "774287684944134155" // AuthMiddleware is a middleware to set the user as context value. @@ -29,6 +30,8 @@ func AuthMiddleware(q *db.Queries) func(http.Handler) http.Handler { }) if err != nil { slog.Error("eeeehhh", "err", err) + next.ServeHTTP(w, r) + return } } @@ -52,6 +55,9 @@ func AuthGuardMiddleware(next http.Handler) http.Handler { } func GetUser(ctx context.Context) *db.User { - user := ctx.Value(userKey).(*db.User) + user, ok := ctx.Value(userKey).(*db.User) + if !ok { + return nil + } return user } diff --git a/internal/server/server.go b/internal/server/server.go index 6799d48..a42fde4 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -28,7 +28,6 @@ func NewServer(queries *db.Queries, logger *slog.Logger) *Server { router.Use(middleware.Recoverer) router.Use(middleware.RequestID) router.Use(middleware.RealIP) - router.Use(middleware.Recoverer) router.Use(customMiddlewares.AuthMiddleware(queries)) return &Server{