aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/cashierd/main.go6
-rw-r--r--server/auth/github/github.go12
2 files changed, 11 insertions, 7 deletions
diff --git a/cmd/cashierd/main.go b/cmd/cashierd/main.go
index 2a8d2b8..e509304 100644
--- a/cmd/cashierd/main.go
+++ b/cmd/cashierd/main.go
@@ -14,7 +14,6 @@ import (
"net/http"
"os"
"strings"
- "time"
"golang.org/x/oauth2"
@@ -133,11 +132,6 @@ func callbackHandler(a *appContext, w http.ResponseWriter, r *http.Request) (int
if err := a.authsession.Authorize(a.authprovider, code); err != nil {
return http.StatusInternalServerError, err
}
- // Github tokens don't have an expiry. Set one so that the session expires
- // after a period.
- if a.authsession.Token.Expiry.Unix() <= 0 {
- a.authsession.Token.Expiry = time.Now().Add(1 * time.Hour)
- }
a.setAuthCookie(w, r, a.authsession.Token)
http.Redirect(w, r, "/", http.StatusFound)
return http.StatusFound, nil
diff --git a/server/auth/github/github.go b/server/auth/github/github.go
index 192cd9d..d7a57af 100644
--- a/server/auth/github/github.go
+++ b/server/auth/github/github.go
@@ -3,6 +3,7 @@ package github
import (
"errors"
"net/http"
+ "time"
"github.com/nsheridan/cashier/server/auth"
"github.com/nsheridan/cashier/server/config"
@@ -83,7 +84,16 @@ func (c *Config) StartSession(state string) *auth.Session {
// Exchange authorizes the session and returns an access token.
func (c *Config) Exchange(code string) (*oauth2.Token, error) {
- return c.config.Exchange(oauth2.NoContext, code)
+ t, err := c.config.Exchange(oauth2.NoContext, code)
+ if err != nil {
+ return nil, err
+ }
+ // Github tokens don't have an expiry. Set one so that the session expires
+ // after a period.
+ if t.Expiry.Unix() <= 0 {
+ t.Expiry = time.Now().Add(1 * time.Hour)
+ }
+ return t, nil
}
// Username retrieves the username portion of the user's email address.