Пример #1
0
func (s *Storage) LoadAccess(code string) (*osin.AccessData, error) {
	var userData string
	var cid, prevAccessToken, authorizeCode string
	var result osin.AccessData
	row := s.db.QueryRow("SELECT client, authorize, previous, access_token, refresh_token, expires_in, scope, redirect_uri, created_at, extra FROM access WHERE access_token=$1 LIMIT 1", code)
	err := row.Scan(&cid, &authorizeCode, &prevAccessToken, &result.AccessToken, &result.RefreshToken, &result.ExpiresIn, &result.Scope, &result.RedirectUri, &result.CreatedAt, &userData)
	result.UserData = userData

	client, err := s.GetClient(cid)
	if err != nil {
		return nil, err
	}
	result.Client = client

	authorize, err := s.LoadAuthorize(authorizeCode)
	if err != nil {
		return nil, err
	}
	result.AuthorizeData = authorize

	if prevAccessToken != "" {
		prevAccess, err := s.LoadAccess(prevAccessToken)
		if err != nil {
			return nil, err
		}
		result.AccessData = prevAccess
	}

	return &result, err
}