38 lines
935 B
Go
38 lines
935 B
Go
package middleware
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/assimon/luuu/config"
|
|
"github.com/assimon/luuu/util/constant"
|
|
"github.com/assimon/luuu/util/json"
|
|
"github.com/assimon/luuu/util/sign"
|
|
"github.com/labstack/echo/v4"
|
|
"io/ioutil"
|
|
)
|
|
|
|
func CheckApiSign() echo.MiddlewareFunc {
|
|
return func(next echo.HandlerFunc) echo.HandlerFunc {
|
|
return func(ctx echo.Context) error {
|
|
params, err := ioutil.ReadAll(ctx.Request().Body)
|
|
if err != nil {
|
|
return constant.SignatureErr
|
|
}
|
|
m := make(map[string]interface{})
|
|
err = json.Cjson.Unmarshal(params, &m)
|
|
signature, ok := m["signature"]
|
|
if !ok {
|
|
return constant.SignatureErr
|
|
}
|
|
checkSignature, err := sign.Get(m, config.GetApiAuthToken())
|
|
if err != nil {
|
|
return constant.SignatureErr
|
|
}
|
|
if checkSignature != signature {
|
|
return constant.SignatureErr
|
|
}
|
|
ctx.Request().Body = ioutil.NopCloser(bytes.NewBuffer(params))
|
|
return next(ctx)
|
|
}
|
|
}
|
|
}
|