mirror of
https://github.com/labstack/echo.git
synced 2025-06-02 23:27:34 +02:00
Signature changed for key and basic auth validator
Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
parent
c3069d42c1
commit
5f392f3bb1
@ -23,7 +23,7 @@ type (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BasicAuthValidator defines a function to validate BasicAuth credentials.
|
// BasicAuthValidator defines a function to validate BasicAuth credentials.
|
||||||
BasicAuthValidator func(string, string, echo.Context) bool
|
BasicAuthValidator func(string, string, echo.Context) (error, bool)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -81,7 +81,10 @@ func BasicAuthWithConfig(config BasicAuthConfig) echo.MiddlewareFunc {
|
|||||||
for i := 0; i < len(cred); i++ {
|
for i := 0; i < len(cred); i++ {
|
||||||
if cred[i] == ':' {
|
if cred[i] == ':' {
|
||||||
// Verify credentials
|
// Verify credentials
|
||||||
if config.Validator(cred[:i], cred[i+1:], c) {
|
err, valid := config.Validator(cred[:i], cred[i+1:], c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if valid {
|
||||||
return next(c)
|
return next(c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ func TestBasicAuth(t *testing.T) {
|
|||||||
req := httptest.NewRequest(echo.GET, "/", nil)
|
req := httptest.NewRequest(echo.GET, "/", nil)
|
||||||
res := httptest.NewRecorder()
|
res := httptest.NewRecorder()
|
||||||
c := e.NewContext(req, res)
|
c := e.NewContext(req, res)
|
||||||
f := func(u, p string, c echo.Context) bool {
|
f := func(u, p string, c echo.Context) (error, bool) {
|
||||||
if u == "joe" && p == "secret" {
|
if u == "joe" && p == "secret" {
|
||||||
return true
|
return nil, true
|
||||||
}
|
}
|
||||||
return false
|
return nil, false
|
||||||
}
|
}
|
||||||
h := BasicAuth(f)(func(c echo.Context) error {
|
h := BasicAuth(f)(func(c echo.Context) error {
|
||||||
return c.String(http.StatusOK, "test")
|
return c.String(http.StatusOK, "test")
|
||||||
|
@ -32,7 +32,7 @@ type (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// KeyAuthValidator defines a function to validate KeyAuth credentials.
|
// KeyAuthValidator defines a function to validate KeyAuth credentials.
|
||||||
KeyAuthValidator func(string, echo.Context) bool
|
KeyAuthValidator func(string, echo.Context) (error, bool)
|
||||||
|
|
||||||
keyExtractor func(echo.Context) (string, error)
|
keyExtractor func(echo.Context) (string, error)
|
||||||
)
|
)
|
||||||
@ -94,7 +94,10 @@ func KeyAuthWithConfig(config KeyAuthConfig) echo.MiddlewareFunc {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
if config.Validator(key, c) {
|
err, valid := config.Validator(key, c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if valid {
|
||||||
return next(c)
|
return next(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ func TestKeyAuth(t *testing.T) {
|
|||||||
res := httptest.NewRecorder()
|
res := httptest.NewRecorder()
|
||||||
c := e.NewContext(req, res)
|
c := e.NewContext(req, res)
|
||||||
config := KeyAuthConfig{
|
config := KeyAuthConfig{
|
||||||
Validator: func(key string, c echo.Context) bool {
|
Validator: func(key string, c echo.Context) (error, bool) {
|
||||||
return key == "valid-key"
|
return nil, key == "valid-key"
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
h := KeyAuthWithConfig(config)(func(c echo.Context) error {
|
h := KeyAuthWithConfig(config)(func(c echo.Context) error {
|
||||||
|
@ -14,11 +14,11 @@ Basic auth middleware provides an HTTP basic authentication.
|
|||||||
*Usage*
|
*Usage*
|
||||||
|
|
||||||
```go
|
```go
|
||||||
e.Use(middleware.BasicAuth(func(username, password string, c echo.Context) bool {
|
e.Use(middleware.BasicAuth(func(username, password string, c echo.Context) (error, bool) {
|
||||||
if username == "joe" && password == "secret" {
|
if username == "joe" && password == "secret" {
|
||||||
return true
|
return nil, true
|
||||||
}
|
}
|
||||||
return false
|
return nil, false
|
||||||
}))
|
}))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ Key auth middleware provides a key based authentication.
|
|||||||
*Usage*
|
*Usage*
|
||||||
|
|
||||||
```go
|
```go
|
||||||
e.Use(middleware.KeyAuth(func(key string) bool {
|
e.Use(middleware.KeyAuth(func(key string) (error, bool) {
|
||||||
return key == "valid-key"
|
return nil, key == "valid-key"
|
||||||
}))
|
}))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user