@@ -223,7 +223,7 @@ func (p *OauthProxy) redeemCode(host, code string) (string, string, error) {
223 return access_token, email, nil
223 return access_token, email, nil
226−func (p *OauthProxy) ClearCookie(rw http.ResponseWriter, req *http.Request) {
226+func (p *OauthProxy) MakeCookie(req *http.Request, value string, expiration time.Duration) *http.Cookie {
227 domain := req.Host
227 domain := req.Host
228 if h, _, err := net.SplitHostPort(domain); err == nil {
228 if h, _, err := net.SplitHostPort(domain); err == nil {
229 domain = h
229 domain = h
@@ -234,40 +234,28 @@ func (p *OauthProxy) ClearCookie(rw http.ResponseWriter, req *http.Request) {
235 domain = p.CookieDomain
235 domain = p.CookieDomain
239+ value = signedCookieValue(p.CookieSeed, p.CookieKey, value)
237− cookie := &http.Cookie{
242+ return &http.Cookie{
238 Name: p.CookieKey,
243 Name: p.CookieKey,
239− Value: "",
244+ Value: value,
240 Path: "/",
245 Path: "/",
241 Domain: domain,
246 Domain: domain,
242 HttpOnly: p.CookieHttpOnly,
247 HttpOnly: p.CookieHttpOnly,
243 Secure: p.CookieSecure,
248 Secure: p.CookieSecure,
244− Expires: time.Now().Add(time.Duration(1) * time.Hour * -1),
249+ Expires: time.Now().Add(expiration),
246− http.SetCookie(rw, cookie)
249−func (p *OauthProxy) SetCookie(rw http.ResponseWriter, req *http.Request, val string) {
253+func (p *OauthProxy) ClearCookie(rw http.ResponseWriter, req *http.Request) {
254+ http.SetCookie(rw, p.MakeCookie(req, "", time.Duration(1)*time.Hour*-1))
251− domain := req.Host
257+func (p *OauthProxy) SetCookie(rw http.ResponseWriter, req *http.Request, val string) {
252− if h, _, err := net.SplitHostPort(domain); err == nil {
258+ http.SetCookie(rw, p.MakeCookie(req, val, p.CookieExpire))
255− if p.CookieDomain != "" {
256− if !strings.HasSuffix(domain, p.CookieDomain) {
257− log.Printf("Warning: request host is %q but using configured cookie domain of %q", domain, p.CookieDomain)
259− domain = p.CookieDomain
261− cookie := &http.Cookie{
263− Value: signedCookieValue(p.CookieSeed, p.CookieKey, val),
266− HttpOnly: p.CookieHttpOnly,
267− Secure: p.CookieSecure,
268− Expires: time.Now().Add(p.CookieExpire),
270− http.SetCookie(rw, cookie)
273func (p *OauthProxy) ProcessCookie(rw http.ResponseWriter, req *http.Request) (email, user, access_token string, ok bool) {
261func (p *OauthProxy) ProcessCookie(rw http.ResponseWriter, req *http.Request) (email, user, access_token string, ok bool) {