diff options
| -rw-r--r-- | app/controllers/sessions/controller_test.go | 1 | ||||
| -rw-r--r-- | pkg/pls/option.go | 4 | ||||
| -rw-r--r-- | pkg/web/cookie/new.go | 22 |
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...) } |
