// FindOAuth2UserInSession returns an OAuth2User object in the given session `s`. func FindOAuth2UserInSession(s *wcg.Session, host string) *OAuth2User { if s == nil { return nil } key := fmt.Sprintf("oauth2://%s", host) d, ok := s.GetData(key) if !ok { return nil } user := &OAuth2User{Token: &oauth2.Token{}} values := make([]string, len(textfields)) for i, v := range textfields { if values[i], ok = d.Get(v); !ok { s.Delete(key) return nil } } user.AccessToken = values[0] user.RefreshToken = values[1] user.id = values[2] user.displayName = values[3] user.profileLink = values[4] user.imageLink = values[5] user.authProvider = values[6] if user.Token.Expiry, ok = d.GetTime("expiry"); !ok { s.Delete(key) return nil } if user.lastLogin, ok = d.GetTime("last_login"); !ok { s.Delete(key) return nil } // Check if the token is expired or not. if user.Expired() { s.Delete(key) return nil } return user }