github.com/paulwerner/bookkeeper@v0.1.0/router/middleware/auth.go (about)

     1  package middleware
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/gofiber/fiber/v2"
     7  	jwtware "github.com/gofiber/jwt/v2"
     8  )
     9  
    10  // NewJWT creates a new JSON Web Token middleware
    11  func NewJWT() fiber.Handler {
    12  	return jwtware.New(
    13  		jwtware.Config{
    14  			SigningKey: []byte(os.Getenv("JWT_SECRET")),
    15  			ErrorHandler: func(c *fiber.Ctx, err error) error {
    16  				if err.Error() == "Missing or malformed JWT" {
    17  					return c.Status(fiber.StatusForbidden).
    18  						JSON(fiber.Map{
    19  							"errors": fiber.Map{
    20  								"msg": "missing or malformed JWT",
    21  							},
    22  						})
    23  
    24  				} else {
    25  					return c.Status(fiber.StatusUnauthorized).
    26  						JSON(fiber.Map{
    27  							"errors": fiber.Map{
    28  								"msg": "invalid or expired JWT",
    29  							},
    30  						})
    31  				}
    32  			},
    33  		},
    34  	)
    35  }