// Package handlers содержит HTTP-обработчики API-сервера Photoplaces. // Реализованы хендлеры: Auth, User, Place, Booking, Review, Service, Tag, // Upload (S3 presigned URLs) и WebSocket (посетители на карте). // Используется валидация через validator и middleware для авторизации/ролей. package handlers import ( "net/http" "time" ) const refreshTokenCookieName = "refresh_token" func isSecure(r *http.Request) bool { if r.TLS != nil { return true } if r.Header.Get("X-Forwarded-Proto") == "https" { return true } return false } func setRefreshTokenCookie(w http.ResponseWriter, token string, r *http.Request) { http.SetCookie(w, &http.Cookie{ Name: refreshTokenCookieName, Value: token, Path: "/", HttpOnly: true, Secure: isSecure(r), SameSite: http.SameSiteLaxMode, MaxAge: int((30 * 24 * time.Hour).Seconds()), }) } func getRefreshTokenFromCookie(r *http.Request) string { cookie, err := r.Cookie(refreshTokenCookieName) if err != nil { return "" } return cookie.Value }