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

Method TokenLogin

pkg/account/user.go:145–182  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

143}
144
145func (s *server) TokenLogin(w http.ResponseWriter, r *http.Request) {
146 var tokenLoginRequest tokenLoginRequest
147 switch r.Header.Get("Content-Type") {
148 case "application/json":
149 if err := json.NewDecoder(r.Body).Decode(&tokenLoginRequest); err != nil {
150 webhandlers.Error(w, r, errParse.WithCause(err))
151 return
152 }
153 default:
154 if err := r.ParseForm(); err != nil {
155 webhandlers.Error(w, r, errParse.WithCause(err))
156 return
157 }
158 if err := s.schemaDecoder.Decode(&tokenLoginRequest, r.Form); err != nil {
159 webhandlers.Error(w, r, errParse.WithCause(err))
160 return
161 }
162 }
163 ctx := r.Context()
164 if err := tokenLoginRequest.ValidateContext(ctx); err != nil {
165 webhandlers.Error(w, r, err)
166 return
167 }
168 var loginToken *ttnpb.LoginToken
169 err := s.store.Transact(ctx, func(ctx context.Context, st store.Interface) (err error) {
170 loginToken, err = st.ConsumeLoginToken(ctx, tokenLoginRequest.Token)
171 return err
172 })
173 if err != nil {
174 webhandlers.Error(w, r, err)
175 return
176 }
177 if err := s.CreateUserSession(w, r, loginToken.GetUserIds()); err != nil {
178 webhandlers.Error(w, r, err)
179 return
180 }
181 w.WriteHeader(http.StatusNoContent)
182}
183
184func (s *server) CreateUserSession(w http.ResponseWriter, r *http.Request, userIDs *ttnpb.UserIdentifiers) error {
185 ctx := r.Context()

Callers

nothing calls this directly

Calls 11

ValidateContextMethod · 0.95
CreateUserSessionMethod · 0.95
GetUserIdsMethod · 0.95
ErrorFunction · 0.92
NewDecoderMethod · 0.80
GetMethod · 0.65
DecodeMethod · 0.65
ContextMethod · 0.65
TransactMethod · 0.65
ConsumeLoginTokenMethod · 0.65
WithCauseMethod · 0.45

Tested by

no test coverage detected