| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // 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) {
- secure := isSecure(r)
- maxAge := int((30 * 24 * time.Hour).Seconds())
- http.SetCookie(w, &http.Cookie{
- Name: refreshTokenCookieName,
- Value: token,
- Path: "/",
- HttpOnly: true,
- Secure: secure,
- SameSite: http.SameSiteLaxMode,
- MaxAge: maxAge,
- })
- http.SetCookie(w, &http.Cookie{
- Name: "session",
- Value: "1",
- Path: "/",
- HttpOnly: false,
- Secure: secure,
- SameSite: http.SameSiteLaxMode,
- MaxAge: maxAge,
- })
- }
- func getRefreshTokenFromCookie(r *http.Request) string {
- cookie, err := r.Cookie(refreshTokenCookieName)
- if err != nil {
- return ""
- }
- return cookie.Value
- }
|