hiling_go/api/token.go

97 lines
2.5 KiB
Go

package api
import (
"time"
)
type renewAccessRequest struct {
RefreshToken string `json:"refresh_token" binding:"required"`
}
type renewAccessResponse struct {
AccesToken string `json:"access_token"`
AccessTokenExpiresAt time.Time `json:"access_token_expires_at"`
}
// func (server *Server) renewAccessToken(ctx *gin.Context) {
// var req renewAccessRequest
// if err := ctx.ShouldBindJSON(&req); err != nil {
// ctx.JSON(http.StatusBadRequest, errorResponse(err, ""))
// return
// }
// refreshPayload, err := server.tokenMaker.VerifyToken(req.RefreshToken)
// if err != nil {
// ctx.JSON(http.StatusUnauthorized, errorResponse(err, ""))
// return
// }
// session, err := server.store.GetSession(ctx, refreshPayload.ID)
// if err != nil {
// if err == sql.ErrNoRows {
// ctx.JSON(http.StatusNotFound, errorResponse(err, ""))
// return
// }
// ctx.JSON(http.StatusInternalServerError, errorResponse(err, ""))
// return
// }
// if session.IsBlocked {
// err := fmt.Errorf("blocked session")
// ctx.JSON(http.StatusUnauthorized, errorResponse(err, ""))
// return
// }
// if session.Email != refreshPayload.Email {
// err := fmt.Errorf("incorrect session user")
// ctx.JSON(http.StatusUnauthorized, errorResponse(err, ""))
// return
// }
// if session.RefreshToken != req.RefreshToken {
// err := fmt.Errorf("mismatched session token")
// ctx.JSON(http.StatusUnauthorized, errorResponse(err, ""))
// return
// }
// if time.Now().After(refreshPayload.ExpiredAt) {
// err := fmt.Errorf("Expired session")
// ctx.JSON(http.StatusUnauthorized, errorResponse(err, ""))
// return
// }
// user, err := server.store.GetUserByEmail(ctx, refreshPayload.Email)
// if err != nil {
// if err == sql.ErrNoRows {
// ctx.JSON(http.StatusNotFound, errorResponse(err, ""))
// return
// }
// ctx.JSON(http.StatusInternalServerError, errorResponse(err, ""))
// return
// }
// merchant, err := server.store.GetMerchantByUserId(ctx, user.ID)
// if err != nil {
// ctx.JSON(http.StatusInternalServerError, errorResponse(err, ""))
// return
// }
// accessToken, accessPayload, err := server.tokenMaker.CreateToken(
// refreshPayload.Email,
// merchant.ID.String(),
// server.config.TokenDuration,
// )
// if err != nil {
// ctx.JSON(http.StatusInternalServerError, errorResponse(err, ""))
// return
// }
// res := renewAccessResponse{
// AccesToken: accessToken,
// AccessTokenExpiresAt: accessPayload.ExpiredAt,
// }
// ctx.JSON(http.StatusOK, res)
// }