---
name: http_session_cookie_set
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: impure
signature: "func SessionCookieSet(w http.ResponseWriter, name, token string, expiresAt int64)"
description: "Escribe una cookie de sesion HttpOnly en la respuesta HTTP. Path='/', SameSite=Lax, Expires=time.Unix(expiresAt,0). No retorna error porque http.SetCookie no falla en runtime."
tags: [http, session, cookie, auth, response]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["net/http", "time"]
params:
  - name: w
    desc: "ResponseWriter donde se escribe el header Set-Cookie"
  - name: name
    desc: "nombre de la cookie (p.ej. 'kanban_session')"
  - name: token
    desc: "valor del token de sesion"
  - name: expiresAt
    desc: "timestamp Unix (segundos) de expiracion de la cookie"
output: "escribe el header Set-Cookie en w; sin valor de retorno"
tested: true
tests:
  - "cookie set con nombre y token correctos"
  - "header Set-Cookie contiene HttpOnly y SameSite=Lax"
test_file_path: "functions/infra/http_session_cookie_set_test.go"
file_path: "functions/infra/http_session_cookie_set.go"
---

## Ejemplo

```go
sess, err := infra.SessionCreate(db, userID, 7*24*time.Hour, nil)
if err != nil {
    http.Error(w, "internal error", 500)
    return
}
infra.SessionCookieSet(w, "my_session", sess.Token, sess.ExpiresAt)
```

## Notas

Extraido de apps/kanban/backend/auth.go. La funcion no retorna error porque `http.SetCookie` escribe directamente en los headers del ResponseWriter y nunca falla. El campo `error_type` se omite porque la firma no tiene retorno de error — hay precedente en el registry (componentes C++ y otros helpers HTTP impuros sin error_type).
