45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
![]() |
package users
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
"ttime/internal/types"
|
||
|
|
||
|
"github.com/gofiber/fiber/v2"
|
||
|
"github.com/gofiber/fiber/v2/log"
|
||
|
"github.com/golang-jwt/jwt/v5"
|
||
|
)
|
||
|
|
||
|
// LoginRenew is a simple handler that renews the token
|
||
|
// @Summary LoginRenews
|
||
|
// @Description renews the users token
|
||
|
// @Security bererToken
|
||
|
// @Tags User
|
||
|
// @Accept json
|
||
|
// @Produce plain
|
||
|
// @Success 200 Token types.Token "Successfully signed token for user"
|
||
|
// @Failure 401 {string} string "Unauthorized"
|
||
|
// @Failure 500 {string} string "Internal server error"
|
||
|
// @Router /loginerenew [post]
|
||
|
func LoginRenew(c *fiber.Ctx) error {
|
||
|
user := c.Locals("user").(*jwt.Token)
|
||
|
|
||
|
log.Info("Renewing token for user:", user.Claims.(jwt.MapClaims)["name"])
|
||
|
|
||
|
claims := user.Claims.(jwt.MapClaims)
|
||
|
claims["exp"] = time.Now().Add(time.Hour * 72).Unix()
|
||
|
renewed := jwt.MapClaims{
|
||
|
"name": claims["name"],
|
||
|
"admin": claims["admin"],
|
||
|
"exp": claims["exp"],
|
||
|
}
|
||
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, renewed)
|
||
|
t, err := token.SignedString([]byte("secret"))
|
||
|
if err != nil {
|
||
|
log.Warn("Error signing token")
|
||
|
return c.SendStatus(fiber.StatusInternalServerError)
|
||
|
}
|
||
|
|
||
|
log.Info("Successfully renewed token for user:", user.Claims.(jwt.MapClaims)["name"])
|
||
|
return c.JSON(types.Token{Token: t})
|
||
|
}
|