46 lines
930 B
Go
46 lines
930 B
Go
package oauth
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"net/http"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func SetStateCookie(w http.ResponseWriter, uak []byte, ssl bool) {
|
|
encodedUak := base64.RawURLEncoding.EncodeToString(uak)
|
|
http.SetCookie(w, &http.Cookie{
|
|
Name: "oauth_uak",
|
|
Value: encodedUak,
|
|
Path: "/",
|
|
MaxAge: 300,
|
|
HttpOnly: true,
|
|
Secure: ssl,
|
|
SameSite: http.SameSiteLaxMode,
|
|
})
|
|
}
|
|
|
|
func GetStateCookie(r *http.Request) ([]byte, error) {
|
|
if r == nil {
|
|
return nil, errors.New("Request cannot be nil")
|
|
}
|
|
cookie, err := r.Cookie("oauth_uak")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
uak, err := base64.RawURLEncoding.DecodeString(cookie.Value)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to decode userAgentKey from cookie")
|
|
}
|
|
return uak, nil
|
|
}
|
|
|
|
func DeleteStateCookie(w http.ResponseWriter) {
|
|
http.SetCookie(w, &http.Cookie{
|
|
Name: "oauth_uak",
|
|
Value: "",
|
|
Path: "/",
|
|
MaxAge: -1,
|
|
})
|
|
}
|