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 }