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{