(id string)
| 244 | } |
| 245 | |
| 246 | func (s *storage) loadAccess(id string) (*osin.AccessData, error) { |
| 247 | var ( |
| 248 | accessToken *ttnpb.OAuthAccessToken |
| 249 | client *ttnpb.Client |
| 250 | ) |
| 251 | err := s.store.Transact(s.ctx, func(ctx context.Context, st oauth_store.Interface) (err error) { |
| 252 | accessToken, err = st.GetAccessToken(ctx, id) |
| 253 | if err != nil { |
| 254 | return err |
| 255 | } |
| 256 | client, err = st.GetClient(ctx, accessToken.ClientIds, nil) |
| 257 | if err != nil { |
| 258 | return err |
| 259 | } |
| 260 | return nil |
| 261 | }) |
| 262 | if err != nil { |
| 263 | return nil, err |
| 264 | } |
| 265 | var expiresIn int32 |
| 266 | if expiresAt := ttnpb.StdTime(accessToken.ExpiresAt); expiresAt != nil { |
| 267 | expiresIn = int32(expiresAt.Sub(*ttnpb.StdTime(accessToken.CreatedAt)).Seconds()) |
| 268 | } |
| 269 | return &osin.AccessData{ |
| 270 | Client: osinClient{client}, |
| 271 | AccessToken: accessToken.AccessToken, |
| 272 | RefreshToken: accessToken.RefreshToken, |
| 273 | ExpiresIn: expiresIn, |
| 274 | Scope: rightsToScope(accessToken.Rights...), |
| 275 | CreatedAt: *ttnpb.StdTime(accessToken.CreatedAt), |
| 276 | UserData: userData{ |
| 277 | UserSessionIdentifiers: &ttnpb.UserSessionIdentifiers{ |
| 278 | UserIds: accessToken.UserIds, |
| 279 | SessionId: accessToken.UserSessionId, |
| 280 | }, |
| 281 | ID: id, |
| 282 | }, |
| 283 | }, nil |
| 284 | } |
| 285 | |
| 286 | func (s *storage) LoadAccess(token string) (*osin.AccessData, error) { |
| 287 | panic("LoadAccess should never be called by osin") |
no test coverage detected