Esempio n. 1
0
func (store *MongoStorage) createAccessData(copyFrom *AccessData, osinData *osin.AccessData) *osin.AccessData {
	if copyFrom.AccessData != nil {
		osinAccessData := store.createAccessData(copyFrom.AccessData, &osin.AccessData{})
		osinData.AccessData = osinAccessData
	}

	osinData.AccessToken = copyFrom.AccessToken
	osinData.RefreshToken = copyFrom.RefreshToken
	osinData.ExpiresIn = copyFrom.ExpiresIn
	osinData.Scope = copyFrom.Scope
	osinData.RedirectUri = copyFrom.RedirectUri
	osinData.CreatedAt = copyFrom.CreatedAt
	osinData.UserData = copyFrom.UserData

	client, err := store.GetClientWithUserData(copyFrom.UserData)
	if err != nil || client == nil {
		osinData.Client = &osin.DefaultClient{}
	} else {
		osinData.Client = client
	}

	authorizeData, err := store.GetAuthorizeDataWithUserData(copyFrom.UserData)
	if err != nil || client == nil {
		osinData.AuthorizeData = &osin.AuthorizeData{}
	} else {
		osinData.AuthorizeData = authorizeData
	}

	return osinData
}
Esempio n. 2
0
// LoadAccess retrieves access data by token. osin.Client information MUST be loaded together.
// osin.AuthorizeData and osin.AccessData DON'T NEED to be loaded if not easily available.
// Optionally can return error if expired.
func (s *OAuth2Storage) LoadAccess(token string) (*osin.AccessData, error) {
	oad := new(OAuth2AccessData)
	if err := Db().Model(OAuth2AccessData{}).Where(&OAuth2AccessData{AccessToken: token}).Scan(oad); err != nil {
		return nil, errors.New("LoadAccess: AccessToken not found")
	}

	var ret osin.AccessData

	ret.CreatedAt = oad.CreatedAt
	ret.ExpiresIn = int32(oad.ExpiresIn)
	if ret.IsExpired() {
		return nil, errors.New("Access token expired")
	}

	if client, err := s.GetClient(strconv.FormatUint(oad.ClientID, 10)); err == nil {
		ret.Client = client
	} else {
		return nil, err
	}

	ret.AccessToken = token
	ret.Scope = oad.Scope
	ret.RedirectUri = oad.RedirectURI
	ret.UserData = oad.UserID

	if oad.RefreshTokenID.Valid {
		var refreshToken OAuth2RefreshToken
		if err := Db().First(&refreshToken, uint64(oad.RefreshTokenID.Int64)); err != nil {
			return nil, err
		}
		ret.RefreshToken = refreshToken.Token
	}

	return &ret, nil
}
Esempio n. 3
0
func (old *AccessData) transfer() *osin.AccessData {
	var accessData osin.AccessData = osin.AccessData{}
	accessData.Client = &old.Client
	accessData.AccessToken = old.AccessToken
	accessData.RefreshToken = old.RefreshToken
	accessData.ExpiresIn = old.ExpiresIn
	accessData.Scope = old.Scope
	accessData.RedirectUri = old.RedirectUri
	accessData.CreatedAt = old.CreatedAt
	accessData.UserData = old.UserData
	return &accessData
}