MCPcopy Create free account
hub / github.com/dhij/ecomm / renewAccessToken

Method renewAccessToken

ecomm-api/handler/handler.go:393–438  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

391}
392
393func (h *handler) renewAccessToken(w http.ResponseWriter, r *http.Request) {
394 var req RenewAccessTokenReq
395 if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
396 http.Error(w, "error decoding request body", http.StatusBadRequest)
397 return
398 }
399
400 refreshClaims, err := h.TokenMaker.VerifyToken(req.RefreshToken)
401 if err != nil {
402 http.Error(w, "error verifying token", http.StatusUnauthorized)
403 return
404 }
405
406 session, err := h.client.GetSession(h.ctx, &pb.SessionReq{
407 Id: refreshClaims.RegisteredClaims.ID,
408 })
409 if err != nil {
410 http.Error(w, "error getting session", http.StatusInternalServerError)
411 return
412 }
413
414 if session.IsRevoked {
415 http.Error(w, "session revoked", http.StatusUnauthorized)
416 return
417 }
418
419 if session.GetUserEmail() != refreshClaims.Email {
420 http.Error(w, "invalid session", http.StatusUnauthorized)
421 return
422 }
423
424 accessToken, accessClaims, err := h.TokenMaker.CreateToken(refreshClaims.ID, refreshClaims.Email, refreshClaims.IsAdmin, 15*time.Minute)
425 if err != nil {
426 http.Error(w, "error creating token", http.StatusInternalServerError)
427 return
428 }
429
430 res := RenewAccessTokenRes{
431 AccessToken: accessToken,
432 AccessTokenExpiresAt: accessClaims.RegisteredClaims.ExpiresAt.Time,
433 }
434
435 w.Header().Set("Content-Type", "application/json")
436 w.WriteHeader(http.StatusOK)
437 json.NewEncoder(w).Encode(res)
438}
439
440func (h *handler) revokeSession(w http.ResponseWriter, r *http.Request) {
441 claims := r.Context().Value(authKey{}).(*token.UserClaims)

Callers

nothing calls this directly

Calls 4

VerifyTokenMethod · 0.80
CreateTokenMethod · 0.80
GetSessionMethod · 0.65
GetUserEmailMethod · 0.45

Tested by

no test coverage detected