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

Method Get

pkg/account/session/session.go:106–135  ·  view source on GitHub ↗

Get retrieves the current session.

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

104
105// Get retrieves the current session.
106func (s *Session) Get(w http.ResponseWriter, r *http.Request) (*http.Request, *ttnpb.UserSession, error) {
107 ctx := r.Context()
108 if session, ok := ctx.Value(userSessionKey).(*ttnpb.UserSession); ok {
109 return r, session, nil
110 }
111 cookie, err := s.getAuthCookie(w, r)
112 if err != nil {
113 return r, nil, err
114 }
115 var session *ttnpb.UserSession
116 err = s.Store.Transact(ctx, func(ctx context.Context, st Store) (err error) {
117 session, err = st.GetSession(
118 ctx,
119 &ttnpb.UserIdentifiers{UserId: cookie.UserID},
120 cookie.SessionID,
121 )
122 return err
123 })
124 if err != nil {
125 if errors.IsNotFound(err) {
126 s.RemoveAuthCookie(w, r)
127 }
128 return r, nil, err
129 }
130 if expiresAt := ttnpb.StdTime(session.ExpiresAt); expiresAt != nil && expiresAt.Before(time.Now()) {
131 s.RemoveAuthCookie(w, r)
132 return r, nil, errSessionExpired.New()
133 }
134 return r.WithContext(context.WithValue(ctx, userSessionKey, session)), session, nil
135}
136
137type userKeyType struct{}
138

Callers 1

GetUserMethod · 0.95

Calls 10

getAuthCookieMethod · 0.95
RemoveAuthCookieMethod · 0.95
IsNotFoundFunction · 0.92
StdTimeFunction · 0.92
ContextMethod · 0.65
TransactMethod · 0.65
GetSessionMethod · 0.65
NowMethod · 0.65
NewMethod · 0.65
ValueMethod · 0.45

Tested by

no test coverage detected