package middleware import ( "github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3/middleware/session" "lmika.dev/lmika/weiro/models" "lmika.dev/lmika/weiro/services/auth" ) func OptionalUser(auth *auth.Service) func(c fiber.Ctx) error { return func(c fiber.Ctx) error { sess := session.FromContext(c) userID, _ := sess.Get("user_id").(int64) if userID == 0 { return c.Next() } user, err := auth.GetUser(c.Context(), userID) if err != nil { return c.Next() } c.Locals("user", user) c.SetContext(models.WithUser(c.Context(), user)) return c.Next() } } func RequireUser(auth *auth.Service) func(c fiber.Ctx) error { return func(c fiber.Ctx) error { sess := session.FromContext(c) userID, _ := sess.Get("user_id").(int64) if userID == 0 { return c.Redirect().To("/login") } user, err := auth.GetUser(c.Context(), userID) if err != nil { return c.Redirect().To("/login") } c.Locals("user", user) c.SetContext(models.WithUser(c.Context(), user)) return c.Next() } }