summaryrefslogtreecommitdiff
path: root/pkg/web/cookie/reset.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-15 17:46:34 -0600
committermo khan <mo@mokhan.ca>2025-04-15 17:46:34 -0600
commit655fb6c4cc180dfcbc13c1b85e0fbf47019caec0 (patch)
tree50aaf25e5c70697ed2c5f8c539bd331fdf11d721 /pkg/web/cookie/reset.go
parent58276879a5505f8e37aa8f81d577b477b5497a53 (diff)
feat: create session cookie tied to access token
Diffstat (limited to 'pkg/web/cookie/reset.go')
-rw-r--r--pkg/web/cookie/reset.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkg/web/cookie/reset.go b/pkg/web/cookie/reset.go
new file mode 100644
index 0000000..1686343
--- /dev/null
+++ b/pkg/web/cookie/reset.go
@@ -0,0 +1,36 @@
+package cookie
+
+import (
+ "net/http"
+ "time"
+
+ "github.com/xlgmokha/x/pkg/env"
+)
+
+func Reset(name string) *http.Cookie {
+ return Clear(&http.Cookie{
+ Name: name,
+ })
+}
+
+func Expire(w http.ResponseWriter, r *http.Request, name string) {
+ cookie, err := r.Cookie(name)
+ if err != nil {
+ http.SetCookie(w, Reset(name))
+ } else {
+ Clear(cookie)
+ http.SetCookie(w, cookie)
+ }
+}
+
+func Clear(cookie *http.Cookie) *http.Cookie {
+ cookie.Value = ""
+ cookie.Expires = time.Unix(0, 0)
+ cookie.MaxAge = -1
+ cookie.Path = "/"
+ cookie.HttpOnly = true
+ cookie.Secure = true
+ cookie.SameSite = http.SameSiteNoneMode
+ cookie.Domain = env.Fetch("HOST", "localhost")
+ return cookie
+}