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

Method CreateUserSession

pkg/account/user.go:184–216  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, userIDs *ttnpb.UserIdentifiers)

Source from the content-addressed store, hash-verified

182}
183
184func (s *server) CreateUserSession(w http.ResponseWriter, r *http.Request, userIDs *ttnpb.UserIdentifiers) error {
185 ctx := r.Context()
186 tokenSecret, err := auth.GenerateKey(ctx)
187 if err != nil {
188 return err
189 }
190 hashedSecret, err := auth.Hash(auth.NewContextWithHashValidator(ctx, tokenHashSettings), tokenSecret)
191 if err != nil {
192 return err
193 }
194 newSession := &ttnpb.UserSession{
195 UserIds: userIDs,
196 SessionSecret: hashedSecret,
197 }
198 if ttl := s.configFromContext(ctx).Login.SessionTTL; ttl > 0 {
199 newSession.ExpiresAt = timestamppb.New(time.Now().Add(ttl))
200 }
201 var session *ttnpb.UserSession
202 err = s.store.Transact(ctx, func(ctx context.Context, st store.Interface) error {
203 session, err = st.CreateSession(ctx, newSession)
204 return err
205 })
206 if err != nil {
207 return err
208 }
209 events.Publish(oauth.EvtUserLogin.NewWithIdentifiersAndData(ctx, userIDs, nil))
210 return s.session.UpdateAuthCookie(w, r, func(cookie *auth.CookieShape) error {
211 cookie.UserID = session.GetUserIds().GetUserId()
212 cookie.SessionID = session.SessionId
213 cookie.SessionSecret = tokenSecret
214 return nil
215 })
216}
217
218func (s *server) Logout(w http.ResponseWriter, r *http.Request) {
219 r, session, err := s.session.Get(w, r)

Callers 2

LoginMethod · 0.95
TokenLoginMethod · 0.95

Calls 15

configFromContextMethod · 0.95
GetUserIdsMethod · 0.95
GenerateKeyFunction · 0.92
HashFunction · 0.92
PublishFunction · 0.92
UpdateAuthCookieMethod · 0.80
GetUserIdMethod · 0.80
ContextMethod · 0.65
NewMethod · 0.65
AddMethod · 0.65
NowMethod · 0.65

Tested by

no test coverage detected