package handlers

import (
	"database/sql"
	"log/slog"
	"net/http"

	"git.soup.land/soup/sxgo/ssr"
)

// RequestContext holds dependencies that are injected into every request handler.
type RequestContext struct {
	DB        *sql.DB
	Logger    *slog.Logger
	TmplCache *ssr.TmplCache
	IsAdmin   bool // true if authenticated as admin
}

// RequireAdmin checks authentication and returns 401 if not admin.
// Returns true if authenticated, false if 401 was sent.
func (rc *RequestContext) RequireAdmin(w http.ResponseWriter) bool {
	if !rc.IsAdmin {
		http.Error(w, "Unauthorized", http.StatusUnauthorized)
		return false
	}
	return true
}
