package middleware

import (
	"log"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/session"
	"go.mongodb.org/mongo-driver/mongo"
)

// Session store'u MongoDB'ye kaydedecek şekilde ayarlar
func SetupSessionStore(db *mongo.Database) *session.Store {
	store := session.New(session.Config{
		CookieHTTPOnly: true,
		CookieSecure:   true,
	})

	// MongoDB ile bağlantı sağla
	store.UseMongo(db)
	return store
}

// Session kontrol middleware'i
func SessionMiddleware(store *session.Store) fiber.Handler {
	return func(c *fiber.Ctx) error {
		sess, err := store.Get(c)
		if err != nil {
			log.Println("Session alırken hata:", err)
			return c.SendStatus(fiber.StatusUnauthorized)
		}

		if sess.Get("user_id") == nil {
			return c.SendStatus(fiber.StatusUnauthorized)
		}
		return c.Next()
	}
}
