diff options
| -rw-r--r-- | client/server.go | 6 | ||||
| -rw-r--r-- | internal/server/base.go | 1 | ||||
| -rw-r--r-- | internal/server/server.go | 9 |
3 files changed, 13 insertions, 3 deletions
diff --git a/client/server.go b/client/server.go index 283c531..95ca09e 100644 --- a/client/server.go +++ b/client/server.go @@ -1,6 +1,8 @@ package client import ( + "time" + "github.com/eduvpn/eduvpn-common/internal/failover" "github.com/eduvpn/eduvpn-common/internal/http" "github.com/eduvpn/eduvpn-common/internal/log" @@ -632,6 +634,10 @@ func (c *Client) ensureLogin(srv server.Server, ct oauth.Token) (err error) { c.goBackInternal() } c.FSM.GoTransition(StateAuthorized) + b, berr := srv.Base() + if berr == nil { + b.StartTimeOAuth = time.Now() + } return err } diff --git a/internal/server/base.go b/internal/server/base.go index bfa0d73..20bdd61 100644 --- a/internal/server/base.go +++ b/internal/server/base.go @@ -14,6 +14,7 @@ type Base struct { Endpoints Endpoints `json:"endpoints"` Profiles ProfileInfo `json:"profiles"` StartTime time.Time `json:"start_time"` + StartTimeOAuth time.Time `json:"start_time_oauth"` EndTime time.Time `json:"expire_time"` Type string `json:"server_type"` httpClient *http.Client diff --git a/internal/server/server.go b/internal/server/server.go index 401cb0d..3cefac3 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -66,9 +66,12 @@ func ShouldRenewButton(srv Server) bool { return true } - // 30 minutes have not passed - if !now.After(b.StartTime.Add(30 * time.Minute)) { - return false + // 30 minutes have not passed since the start of OAuth + // If the start time is not known we do not take this into account + if !b.StartTimeOAuth.IsZero() { + if !now.After(b.StartTimeOAuth.Add(30 * time.Minute)) { + return false + } } // Session will not expire today |
