Пример #1
0
// 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
}