diff --git a/pixelapi/pixelapi.go b/pixelapi/pixelapi.go index 78ca2f6..a0522fe 100644 --- a/pixelapi/pixelapi.go +++ b/pixelapi/pixelapi.go @@ -17,7 +17,7 @@ var client = &http.Client{Timeout: time.Minute * 5} // PixelAPI is the Pixeldrain API client type PixelAPI struct { apiEndpoint string - apiKey string + APIKey string RealIP string } @@ -60,8 +60,8 @@ func (p *PixelAPI) jsonRequest(method, url string, target interface{}) error { Message: err.Error(), } } - if p.apiKey != "" { - req.SetBasicAuth("", p.apiKey) + if p.APIKey != "" { + req.SetBasicAuth("", p.APIKey) } if p.RealIP != "" { req.Header.Set("X-Real-IP", p.RealIP) @@ -86,8 +86,8 @@ func (p *PixelAPI) getString(url string) (string, error) { if err != nil { return "", err } - if p.apiKey != "" { - req.SetBasicAuth("", p.apiKey) + if p.APIKey != "" { + req.SetBasicAuth("", p.APIKey) } if p.RealIP != "" { req.Header.Set("X-Real-IP", p.RealIP) @@ -110,8 +110,8 @@ func (p *PixelAPI) getRaw(url string) (io.ReadCloser, error) { if err != nil { return nil, err } - if p.apiKey != "" { - req.SetBasicAuth("", p.apiKey) + if p.APIKey != "" { + req.SetBasicAuth("", p.APIKey) } if p.RealIP != "" { req.Header.Set("X-Real-IP", p.RealIP) @@ -141,8 +141,8 @@ func (p *PixelAPI) form( Message: err.Error(), } } - if p.apiKey != "" { - req.SetBasicAuth("", p.apiKey) + if p.APIKey != "" { + req.SetBasicAuth("", p.APIKey) } if p.RealIP != "" { req.Header.Set("X-Real-IP", p.RealIP) diff --git a/pixelapi/user.go b/pixelapi/user.go index 0d63bcd..24b7da7 100644 --- a/pixelapi/user.go +++ b/pixelapi/user.go @@ -58,7 +58,7 @@ func (p *PixelAPI) UserLogin(username, password string, saveKey bool) (resp *Log return nil, err } if saveKey { - p.apiKey = resp.APIKey + p.APIKey = resp.APIKey } return resp, nil } diff --git a/webcontroller/templates.go b/webcontroller/templates.go index 9e8cc46..f728f24 100644 --- a/webcontroller/templates.go +++ b/webcontroller/templates.go @@ -64,7 +64,10 @@ func (wc *WebController) newTemplateData(w http.ResponseWriter, r *http.Request) log.Debug("Session check for key '%s' failed: %s", key, err) if err.Error() == "authentication_required" || err.Error() == "authentication_failed" { - // This key is invalid, delete it + // Disable API authentication + t.PixelAPI.APIKey = "" + + // Remove the authentication cookie log.Debug("Deleting invalid API key") http.SetCookie(w, &http.Cookie{ Name: "pd_auth_key", diff --git a/webcontroller/user_account.go b/webcontroller/user_account.go index 5b2b5bf..8fac6e1 100644 --- a/webcontroller/user_account.go +++ b/webcontroller/user_account.go @@ -173,11 +173,13 @@ func (wc *WebController) loginForm(td *TemplateData, r *http.Request) (f Form) { f.SubmitSuccess = true f.SubmitMessages = []template.HTML{"Success!"} f.Extra.SetCookie = &http.Cookie{ - Name: "pd_auth_key", - Value: loginResp.APIKey, - Path: "/", - Expires: time.Now().AddDate(50, 0, 0), - Domain: wc.sessionCookieDomain, + Name: "pd_auth_key", + Value: loginResp.APIKey, + Path: "/", + Expires: time.Now().AddDate(50, 0, 0), + Domain: wc.sessionCookieDomain, + SameSite: http.SameSiteStrictMode, + Secure: true, } f.Extra.RedirectTo = "/user" }