summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/sessions/controller_test.go1
-rw-r--r--pkg/pls/option.go4
-rw-r--r--pkg/web/cookie/new.go22
3 files changed, 17 insertions, 10 deletions
diff --git a/app/controllers/sessions/controller_test.go b/app/controllers/sessions/controller_test.go
index c16c6cd..c40dbe7 100644
--- a/app/controllers/sessions/controller_test.go
+++ b/app/controllers/sessions/controller_test.go
@@ -63,6 +63,7 @@ func TestSessions(t *testing.T) {
cookie, err := http.ParseSetCookie(w.Header().Get("Set-Cookie"))
require.NoError(t, err)
require.NotZero(t, cookie)
+ assert.Equal(t, http.SameSiteLaxMode, cookie.SameSite)
})
})
diff --git a/pkg/pls/option.go b/pkg/pls/option.go
index fae002c..07c6b22 100644
--- a/pkg/pls/option.go
+++ b/pkg/pls/option.go
@@ -11,3 +11,7 @@ func New[T any](options ...Option[T]) T {
}
return item
}
+
+func Prepend[T any](items []T, item T) []T {
+ return append([]T{item}, items...)
+}
diff --git a/pkg/web/cookie/new.go b/pkg/web/cookie/new.go
index 9aed2ab..7964086 100644
--- a/pkg/web/cookie/new.go
+++ b/pkg/web/cookie/new.go
@@ -9,16 +9,18 @@ import (
)
func New(name, value string, options ...pls.Option[*http.Cookie]) *http.Cookie {
- options = append(options, With(func(c *http.Cookie) {
- c.Name = name
- c.Value = value // TODO:: digitally sign the value
- c.Path = "/"
- c.HttpOnly = true
- c.Secure = true
- c.SameSite = http.SameSiteStrictMode
- c.Domain = env.Fetch("HOST", "localhost")
- }))
-
+ options = pls.Prepend[pls.Option[*http.Cookie]](
+ options,
+ With(func(c *http.Cookie) {
+ c.Name = name
+ c.Value = value // TODO:: digitally sign the value
+ c.Path = "/"
+ c.HttpOnly = true
+ c.Secure = true
+ c.SameSite = http.SameSiteStrictMode
+ c.Domain = env.Fetch("HOST", "localhost")
+ }),
+ )
return pls.New[*http.Cookie](options...)
}