From d174d65fd5e638a40008f773a82a6f4843511f35 Mon Sep 17 00:00:00 2001 From: jerCarre <22233742+jerCarre@users.noreply.github.com> Date: Thu, 28 Dec 2017 18:32:14 +0100 Subject: [PATCH] Update key_auth.go (#984) Add ability to extract key from a form field --- middleware/key_auth.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/middleware/key_auth.go b/middleware/key_auth.go index 24625260..75d2f146 100644 --- a/middleware/key_auth.go +++ b/middleware/key_auth.go @@ -20,6 +20,7 @@ type ( // Possible values: // - "header:" // - "query:" + // - "form:" KeyLookup string `json:"key_lookup"` // AuthScheme to be used in the Authorization header. @@ -81,6 +82,8 @@ func KeyAuthWithConfig(config KeyAuthConfig) echo.MiddlewareFunc { switch parts[0] { case "query": extractor = keyFromQuery(parts[1]) + case "form": + extractor = keyFromForm(parts[1]) } return func(next echo.HandlerFunc) echo.HandlerFunc { @@ -134,3 +137,14 @@ func keyFromQuery(param string) keyExtractor { return key, nil } } + +// keyFromForm returns a `keyExtractor` that extracts key from the form. +func keyFromForm(param string) keyExtractor { + return func(c echo.Context) (string, error) { + key := c.FormValue(param) + if key == "" { + return "", errors.New("Missing key in the form") + } + return key, nil + } +}