| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // 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
- }
|