initial commit

This commit is contained in:
matyushev_mo committed 2024-12-06 16:10:35 +03:00
commit e8da0f7874
15 files changed
+722

No files matched your search

+79
View File
@@ -0,0 +1,79 @@
package routes
import (
"time"
"desq.com.ru/testjwtauth/handlers"
"github.com/gofiber/fiber/v2"
"github.com/golang-jwt/jwt/v5"
"github.com/google/uuid"
"gorm.io/gorm"
)
func setRTCookie(c *fiber.Ctx, RT string, expires time.Time) {
c.Cookie(&fiber.Cookie{
Name: "refreshToken",
Value: RT,
HTTPOnly: true,
Expires: expires,
})
}
func CreateToken(c *fiber.Ctx) error {
DB := c.Locals("db").(*gorm.DB)
uID := c.Params("id")
userID, err := uuid.Parse(uID)
if err != nil {
return c.Status(500).SendString(err.Error())
}
expires := time.Now().Add(time.Hour * 24)
T, RT, err := handlers.CreateToken(DB, userID, c.IP(), expires.Unix())
if err != nil {
return c.Status(500).SendString(err.Error())
}
setRTCookie(c, RT, expires)
return c.Status(201).JSON(fiber.Map{
"token": T,
})
}
func RefreshToken(c *fiber.Ctx) error {
DB := c.Locals("db").(*gorm.DB)
claims := c.Locals("user").(*jwt.Token).Claims.(jwt.MapClaims)
RT := c.Cookies("refreshToken")
if RT == "" {
return c.Status(400).SendString("Refresh cookie must be set")
}
uID := claims["userId"].(string)
userID, err := uuid.Parse(uID)
if err != nil {
return c.Status(500).SendString(err.Error())
}
err = handlers.RefreshToken(DB, userID, claims, RT, c.IP())
if err != nil {
return c.Status(401).SendString(err.Error())
}
expires := time.Now().Add(time.Hour * 24)
t, RT, err := handlers.CreateToken(DB, userID, c.IP(), expires.Unix())
if err != nil {
return c.Status(500).SendString(err.Error())
}
setRTCookie(c, RT, expires)
return c.Status(200).JSON(fiber.Map{
"token": t,
})
}