package cookie import ( "net/url" "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/parsers" "github.com/gin-gonic/gin" ) // SetAdminCookie sets the admin cookie in the response func SetAdminCookie(gc *gin.Context, token string) { secure := true httpOnly := true hostname := parsers.GetHost(gc) host, _ := parsers.GetHostParts(hostname) gc.SetCookie(constants.AdminCookieName, token, 3600, "/", host, secure, httpOnly) } // GetAdminCookie gets the admin cookie from the request func GetAdminCookie(gc *gin.Context) (string, error) { cookie, err := gc.Request.Cookie(constants.AdminCookieName) if err != nil { return "", err } // cookie escapes special characters like $ // hence we need to unescape before comparing decodedValue, err := url.QueryUnescape(cookie.Value) if err != nil { return "", err } return decodedValue, nil } // DeleteAdminCookie sets the response cookie to empty func DeleteAdminCookie(gc *gin.Context) { secure := true httpOnly := true hostname := parsers.GetHost(gc) host, _ := parsers.GetHostParts(hostname) gc.SetCookie(constants.AdminCookieName, "", -1, "/", host, secure, httpOnly) }