diff --git a/.build.yml b/.build.yml index 558aa064f..f0488dccc 100644 --- a/.build.yml +++ b/.build.yml @@ -1,15 +1,18 @@ image: debian/stable +packages: + - wget sources: - https://github.com/go-kit/kit tasks: - go_toolchain: | - wget -q https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz - sudo tar -C /usr/local -xzf go1.12.6.linux-amd64.tar.gz + go_version="$(wget -q -O- https://golang.org/VERSION?m=text)" + wget -q https://dl.google.com/go/$go_version.linux-amd64.tar.gz + sudo tar -C /usr/local -xzf $go_version.linux-amd64.tar.gz sudo ln -s /usr/local/go/bin/go /usr/bin/go go env - dependencies: | - mkdir -p $HOME/go/src/github.com/go-kit - mv kit $HOME/go/src/github.com/go-kit + mkdir -p $(go env GOPATH)/src/github.com/go-kit + mv kit $(go env GOPATH)/src/github.com/go-kit go get -t github.com/go-kit/kit/... - test: | go test -race -v github.com/go-kit/kit/... diff --git a/auth/casbin/middleware.go b/auth/casbin/middleware.go index fdbf6dc31..43f2f9daa 100644 --- a/auth/casbin/middleware.go +++ b/auth/casbin/middleware.go @@ -48,17 +48,23 @@ func NewEnforcer( subject string, object interface{}, action string, ) endpoint.Middleware { return func(next endpoint.Endpoint) endpoint.Endpoint { - return func(ctx context.Context, request interface{}) ( - response interface{}, err error, - ) { + return func(ctx context.Context, request interface{}) (response interface{}, err error) { casbinModel := ctx.Value(CasbinModelContextKey) casbinPolicy := ctx.Value(CasbinPolicyContextKey) + enforcer, err := stdcasbin.NewEnforcer(casbinModel, casbinPolicy) + if err != nil { + return nil, err + } - enforcer := stdcasbin.NewEnforcer(casbinModel, casbinPolicy) ctx = context.WithValue(ctx, CasbinEnforcerContextKey, enforcer) - if !enforcer.Enforce(subject, object, action) { + ok, err := enforcer.Enforce(subject, object, action) + if err != nil { + return nil, err + } + if !ok { return nil, ErrUnauthorized } + return next(ctx, request) } } diff --git a/auth/casbin/middleware_test.go b/auth/casbin/middleware_test.go index 5dbb003df..922158657 100644 --- a/auth/casbin/middleware_test.go +++ b/auth/casbin/middleware_test.go @@ -5,13 +5,14 @@ import ( "testing" stdcasbin "github.com/casbin/casbin" + "github.com/casbin/casbin/model" fileadapter "github.com/casbin/casbin/persist/file-adapter" ) func TestStructBaseContext(t *testing.T) { e := func(ctx context.Context, i interface{}) (interface{}, error) { return ctx, nil } - m := stdcasbin.NewModel() + m := model.NewModel() m.AddDef("r", "r", "sub, obj, act") m.AddDef("p", "p", "sub, obj, act") m.AddDef("e", "e", "some(where (p.eft == allow))")