MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / LoadRefresh

Method LoadRefresh

pkg/oauth/storage.go:302–337  ·  view source on GitHub ↗
(token string)

Source from the content-addressed store, hash-verified

300}
301
302func (s *storage) LoadRefresh(token string) (*osin.AccessData, error) {
303 tokenType, id, tokenKey, err := auth.SplitToken(token)
304 if err != nil {
305 return nil, err
306 }
307 if tokenType != auth.RefreshToken {
308 return nil, errNoRefreshToken.New()
309 }
310 data, err := s.loadAccess(id)
311 if err != nil {
312 return nil, err
313 }
314 valid, err := auth.Validate(data.RefreshToken, tokenKey)
315 if !valid || err != nil {
316 return nil, errInvalidToken.New()
317 }
318 if userSessionIDs := data.UserData.(userData).UserSessionIdentifiers; userSessionIDs.GetSessionId() != "" {
319 err = s.store.Transact(s.ctx, func(ctx context.Context, st oauth_store.Interface) error {
320 session, err := st.GetSession(ctx, userSessionIDs.GetUserIds(), userSessionIDs.GetSessionId())
321 if err != nil {
322 if errors.IsNotFound(err) {
323 return errSessionExpired.WithCause(err)
324 }
325 return err
326 }
327 if expiresAt := ttnpb.StdTime(session.ExpiresAt); expiresAt != nil && expiresAt.Before(time.Now()) {
328 return errSessionExpired.New()
329 }
330 return nil
331 })
332 if err != nil {
333 return nil, err
334 }
335 }
336 return data, nil
337}
338
339func (s *storage) RemoveRefresh(token string) error {
340 if tokenType, id, _, err := auth.SplitToken(token); err == nil {

Callers

nothing calls this directly

Calls 12

loadAccessMethod · 0.95
SplitTokenFunction · 0.92
ValidateFunction · 0.92
IsNotFoundFunction · 0.92
StdTimeFunction · 0.92
NewMethod · 0.65
TransactMethod · 0.65
GetSessionMethod · 0.65
NowMethod · 0.65
GetSessionIdMethod · 0.45
GetUserIdsMethod · 0.45
WithCauseMethod · 0.45

Tested by

no test coverage detected