54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
|
package eighty
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
oldTime = time.Unix(0, 0)
|
||
|
)
|
||
|
|
||
|
// SetCookieValue is a useful cookie generator for net.http.
|
||
|
func SetCookieValue(key string, expireDuration time.Duration, sessionSecure bool) func(http.ResponseWriter, string, string) {
|
||
|
return func(w http.ResponseWriter, host, newCookieValue string) {
|
||
|
if len(newCookieValue) > 0 {
|
||
|
http.SetCookie(w,
|
||
|
&http.Cookie{
|
||
|
Name: key,
|
||
|
Value: newCookieValue,
|
||
|
Path: "/",
|
||
|
Domain: host,
|
||
|
Expires: time.Now().Add(expireDuration),
|
||
|
Secure: sessionSecure,
|
||
|
SameSite: http.SameSiteLaxMode,
|
||
|
MaxAge: int(expireDuration.Seconds()),
|
||
|
HttpOnly: true,
|
||
|
},
|
||
|
)
|
||
|
} else {
|
||
|
http.SetCookie(w,
|
||
|
&http.Cookie{
|
||
|
Name: key,
|
||
|
Value: "_",
|
||
|
Path: "/",
|
||
|
Domain: host,
|
||
|
Expires: oldTime,
|
||
|
Secure: sessionSecure,
|
||
|
SameSite: http.SameSiteLaxMode,
|
||
|
MaxAge: -1,
|
||
|
HttpOnly: true,
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// GetCookieValue is the simple cookie getter.
|
||
|
func GetCookieValue(req *http.Request, name string) (cookieValue string) {
|
||
|
if cookie, _ := req.Cookie(name); cookie != nil {
|
||
|
cookieValue = cookie.Value
|
||
|
}
|
||
|
return
|
||
|
}
|