github.com/gofiber/fiber/v2@v2.47.0/middleware/csrf/extractors.go (about)

     1  package csrf
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/gofiber/fiber/v2"
     7  )
     8  
     9  var (
    10  	errMissingHeader = errors.New("missing csrf token in header")
    11  	errMissingQuery  = errors.New("missing csrf token in query")
    12  	errMissingParam  = errors.New("missing csrf token in param")
    13  	errMissingForm   = errors.New("missing csrf token in form")
    14  	errMissingCookie = errors.New("missing csrf token in cookie")
    15  )
    16  
    17  // csrfFromParam returns a function that extracts token from the url param string.
    18  func CsrfFromParam(param string) func(c *fiber.Ctx) (string, error) {
    19  	return func(c *fiber.Ctx) (string, error) {
    20  		token := c.Params(param)
    21  		if token == "" {
    22  			return "", errMissingParam
    23  		}
    24  		return token, nil
    25  	}
    26  }
    27  
    28  // csrfFromForm returns a function that extracts a token from a multipart-form.
    29  func CsrfFromForm(param string) func(c *fiber.Ctx) (string, error) {
    30  	return func(c *fiber.Ctx) (string, error) {
    31  		token := c.FormValue(param)
    32  		if token == "" {
    33  			return "", errMissingForm
    34  		}
    35  		return token, nil
    36  	}
    37  }
    38  
    39  // csrfFromCookie returns a function that extracts token from the cookie header.
    40  func CsrfFromCookie(param string) func(c *fiber.Ctx) (string, error) {
    41  	return func(c *fiber.Ctx) (string, error) {
    42  		token := c.Cookies(param)
    43  		if token == "" {
    44  			return "", errMissingCookie
    45  		}
    46  		return token, nil
    47  	}
    48  }
    49  
    50  // csrfFromHeader returns a function that extracts token from the request header.
    51  func CsrfFromHeader(param string) func(c *fiber.Ctx) (string, error) {
    52  	return func(c *fiber.Ctx) (string, error) {
    53  		token := c.Get(param)
    54  		if token == "" {
    55  			return "", errMissingHeader
    56  		}
    57  		return token, nil
    58  	}
    59  }
    60  
    61  // csrfFromQuery returns a function that extracts token from the query string.
    62  func CsrfFromQuery(param string) func(c *fiber.Ctx) (string, error) {
    63  	return func(c *fiber.Ctx) (string, error) {
    64  		token := c.Query(param)
    65  		if token == "" {
    66  			return "", errMissingQuery
    67  		}
    68  		return token, nil
    69  	}
    70  }