authorizer/server/cookie/admin_cookie.go

44 lines
1.2 KiB
Go
Raw Normal View History

package cookie
import (
"net/url"
"github.com/authorizerdev/authorizer/server/constants"
2022-05-30 06:24:16 +00:00
"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
2022-05-30 06:24:16 +00:00
hostname := parsers.GetHost(gc)
host, _ := parsers.GetHostParts(hostname)
2022-05-29 11:52:46 +00:00
gc.SetCookie(constants.AdminCookieName, token, 3600, "/", host, secure, httpOnly)
}
// GetAdminCookie gets the admin cookie from the request
func GetAdminCookie(gc *gin.Context) (string, error) {
2022-05-29 11:52:46 +00:00
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
2022-05-30 06:24:16 +00:00
hostname := parsers.GetHost(gc)
host, _ := parsers.GetHostParts(hostname)
2022-05-29 11:52:46 +00:00
gc.SetCookie(constants.AdminCookieName, "", -1, "/", host, secure, httpOnly)
}