handler

package
v0.0.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2026 License: MIT Imports: 52 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CSRFMiddleware = csrf.New(csrf.Config{

	KeyLookup: "header:X-Csrf-Token",

	ContextKey: "csrf-token",

	CookieName:     "_csrf",
	CookieHTTPOnly: true,
	CookieSecure:   config.CookieSecure,
	CookieSameSite: "Strict",
	CookiePath:     "/",
	ErrorHandler: func(c *fiber.Ctx, err error) error {

		if c.Get("HX-Request") != "" {
			return ErrorHandler(c, fiber.NewError(fiber.StatusForbidden,
				"CSRF token missing or invalid. Please refresh the page and try again."))
		}
		return c.Status(fiber.StatusForbidden).JSON(fiber.Map{
			"error": "CSRF token missing or invalid",
		})
	},
	Next: func(c *fiber.Ctx) bool {

		path := c.Path()
		return path == "/api/sms/webhook"
	},
})

CSRFMiddleware is the CSRF protection middleware configured for Double-Submit Cookie Pattern with cookie-based storage. The token is stored in a secure cookie and validated against the header value. This pattern works across multiple instances without requiring shared session storage.

View Source
var RegistrationRateLimiter = limiter.New(limiter.Config{
	Max:        config.RegistrationRateLimitMax,
	Expiration: config.RegistrationRateLimitExp,
	KeyGenerator: func(c *fiber.Ctx) string {

		return c.IP()
	},
	LimitReached: func(c *fiber.Ctx) error {
		minutes := int(config.RegistrationRateLimitExp.Minutes())
		errorMsg := fmt.Sprintf("Too many registration attempts. "+
			"Please try again in %d minutes.", minutes)
		return showError(c, errorMsg)
	},
})

RegistrationRateLimiter is a strict rate limiter for registration (per IP)

Functions

func AboutHandler

func AboutHandler(c *fiber.Ctx) error

func AdEggConversationHandler

func AdEggConversationHandler(c *fiber.Ctx) error

func AdHandler

func AdHandler(c *fiber.Ctx) error

func AdShareCopyHandler

func AdShareCopyHandler(c *fiber.Ctx) error

func AdShareHandler

func AdShareHandler(c *fiber.Ctx) error

func AdminClicksHandler added in v0.0.18

func AdminClicksHandler(c *fiber.Ctx) error

func AdminDashboardHandler

func AdminDashboardHandler(c *fiber.Ctx) error

func AdminEmbeddingsBackfillHandler added in v0.0.18

func AdminEmbeddingsBackfillHandler(c *fiber.Ctx) error

func AdminEmbeddingsClearAllCachesHandler added in v0.0.18

func AdminEmbeddingsClearAllCachesHandler(c *fiber.Ctx) error

func AdminEmbeddingsClearQueryCacheHandler added in v0.0.18

func AdminEmbeddingsClearQueryCacheHandler(c *fiber.Ctx) error

func AdminEmbeddingsClearSiteCacheHandler added in v0.0.18

func AdminEmbeddingsClearSiteCacheHandler(c *fiber.Ctx) error

func AdminEmbeddingsClearUserCacheHandler added in v0.0.18

func AdminEmbeddingsClearUserCacheHandler(c *fiber.Ctx) error

func AdminEmbeddingsHandler added in v0.0.18

func AdminEmbeddingsHandler(c *fiber.Ctx) error

func AdminRequired

func AdminRequired(c *fiber.Ctx) error

AdminRequired is a middleware that requires a user to be an admin.

func AdminSMSQueueHandler

func AdminSMSQueueHandler(c *fiber.Ctx) error

func AdminTabHandler

func AdminTabHandler(c *fiber.Ctx) error

func AdminUserDeleteHandler

func AdminUserDeleteHandler(c *fiber.Ctx) error

func AdminUserDemoteHandler

func AdminUserDemoteHandler(c *fiber.Ctx) error

func AdminUserPromoteHandler

func AdminUserPromoteHandler(c *fiber.Ctx) error

func AdminUserRestoreHandler

func AdminUserRestoreHandler(c *fiber.Ctx) error

func AdminUsersHandler

func AdminUsersHandler(c *fiber.Ctx) error

func AuthRequired

func AuthRequired(c *fiber.Ctx) error

AuthRequired is a middleware that requires a user to be logged in.

func BookmarkHandler

func BookmarkHandler(c *fiber.Ctx) error

func BuildSearchParamsForTest

func BuildSearchParamsForTest(c *fiber.Ctx, state cookie.SearchState, categoryID int) search.Params

BuildSearchParamsForTest exposes parseSearchParamsFromState for integration tests.

func CategorySelectHandler

func CategorySelectHandler(c *fiber.Ctx) error

func ChangePasswordHandler

func ChangePasswordHandler(c *fiber.Ctx) error

func ConfigureHelmet

func ConfigureHelmet() fiber.Handler

ConfigureHelmet returns a configured Helmet middleware with custom CSP, DENY for X-Frame-Options, and strict-origin-when-cross-origin for Referrer-Policy.

func ConversationModalHandler

func ConversationModalHandler(c *fiber.Ctx) error

func CreateAdHandler

func CreateAdHandler(c *fiber.Ctx) error

func DeleteAccountHandler

func DeleteAccountHandler(c *fiber.Ctx) error

func DeleteAdHandler

func DeleteAdHandler(c *fiber.Ctx) error

func EditAdHandler

func EditAdHandler(c *fiber.Ctx) error

func EditSuggestionsHandler

func EditSuggestionsHandler(c *fiber.Ctx) error

func EggOpinionHandler

func EggOpinionHandler(c *fiber.Ctx) error

func ErrorHandler

func ErrorHandler(c *fiber.Ctx, err error) error

func ErrorPageHandler

func ErrorPageHandler(c *fiber.Ctx) error

ErrorPageHandler displays an error page based on query parameters

func FAQHandler

func FAQHandler(c *fiber.Ctx) error

func HandleHealth

func HandleHealth(c *fiber.Ctx) error

HandleHealth returns the health status of the application

func HideFiltersHandler

func HideFiltersHandler(c *fiber.Ctx) error

func HomeHandler

func HomeHandler(c *fiber.Ctx) error

func ImageFullScreenHandler

func ImageFullScreenHandler(c *fiber.Ctx) error

func ImageHandler

func ImageHandler(c *fiber.Ctx) error

func ImageNavigationHandler

func ImageNavigationHandler(c *fiber.Ctx) error

func JWTMiddleware

func JWTMiddleware(c *fiber.Ctx) error

JWTMiddleware is a middleware that validates a JWT token and sets the user in the context.

func LoginHandler

func LoginHandler(c *fiber.Ctx) error

func LoginSubmitHandler

func LoginSubmitHandler(c *fiber.Ctx) error

func LogoutHandler

func LogoutHandler(c *fiber.Ctx) error

func MessageModalHandler

func MessageModalHandler(c *fiber.Ctx) error

func ModalRemoveHandler

func ModalRemoveHandler(c *fiber.Ctx) error

func NewAdHandler

func NewAdHandler(c *fiber.Ctx) error

func NewAdPriceFieldHandler

func NewAdPriceFieldHandler(c *fiber.Ctx) error

func NotificationsToggleHandler

func NotificationsToggleHandler(c *fiber.Ctx) error

func RegisterHandler

func RegisterHandler(c *fiber.Ctx) error

func RegisterStep1Handler

func RegisterStep1Handler(c *fiber.Ctx) error

RegisterStep1Handler handles the first step submission and sends SMS

func RegisterStep2Handler

func RegisterStep2Handler(c *fiber.Ctx) error

func RegisterStep3Handler

func RegisterStep3Handler(c *fiber.Ctx) error

func RestoreAdHandler

func RestoreAdHandler(c *fiber.Ctx) error

func SMSWebhookHandler

func SMSWebhookHandler(c *fiber.Ctx) error

SMSWebhookHandler processes Twilio webhook callbacks for SMS status updates and incoming messages

func SSEHandler

func SSEHandler(c *fiber.Ctx) error

SSEHandler handles SSE stream for a specific user

func SaveSearchStateForTest

func SaveSearchStateForTest(c *fiber.Ctx, fromForm bool) cookie.SearchState

SaveSearchStateForTest exposes saveSearchStateFromRequest for integration tests.

func SearchPageHandler

func SearchPageHandler(c *fiber.Ctx) error

func SendConversationMessageHandler

func SendConversationMessageHandler(c *fiber.Ctx) error

func SendMessageHandler

func SendMessageHandler(c *fiber.Ctx) error

func SendSSEEvent

func SendSSEEvent(userID int, event SSEEvent)

SendSSEEvent sends an SSE event to all connections for a specific user If the user is not connected, the event is dropped

func SetAdImageStore

func SetAdImageStore(store imagestore.Store)

SetAdImageStore replaces the image store (required at startup; for tests use local store).

func ShowFiltersHandler

func ShowFiltersHandler(c *fiber.Ctx) error

func SuggestionsHandler

func SuggestionsHandler(c *fiber.Ctx) error

func SwitchCategoryHandler

func SwitchCategoryHandler(c *fiber.Ctx) error

func ThrowEggHandler

func ThrowEggHandler(c *fiber.Ctx) error

func UnthrowEggHandler

func UnthrowEggHandler(c *fiber.Ctx) error

func UpdateAdHandler

func UpdateAdHandler(c *fiber.Ctx) error

func UserEggConversationHandler

func UserEggConversationHandler(c *fiber.Ctx) error

func UserMenuHandler

func UserMenuHandler(c *fiber.Ctx) error

func UserMessagesHandler

func UserMessagesHandler(c *fiber.Ctx) error

func UserMyAdsHandler

func UserMyAdsHandler(c *fiber.Ctx) error

func UserMyAdsTabHandler

func UserMyAdsTabHandler(c *fiber.Ctx) error

func UserProfileHandler

func UserProfileHandler(c *fiber.Ctx) error

func UserSettingsHandler

func UserSettingsHandler(c *fiber.Ctx) error

func UserSummaryHandler

func UserSummaryHandler(c *fiber.Ctx) error

func ViewHandler

func ViewHandler(c *fiber.Ctx) error

func WelcomeHandler

func WelcomeHandler(c *fiber.Ctx) error

Types

type SSEEvent

type SSEEvent struct {
	Event string // Event name (e.g., "message-count")
	Data  string // Event data (HTML or text)
}

SSEEvent represents an SSE event to be sent to a user

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL