31 lines
613 B
Go
31 lines
613 B
Go
package middleware
|
|
|
|
import (
|
|
"errors"
|
|
"git.yuntuo.hk/k2safe/go-omni/httpx"
|
|
)
|
|
|
|
var ErrFactory = errors.New("factory fault")
|
|
|
|
func NewAccess(deps Dependencies) (httpx.Middleware, error) {
|
|
if deps.Access() == nil {
|
|
return nil, errors.New("dependencies not initialized")
|
|
}
|
|
switch deps.FactoryMode() {
|
|
case "fail":
|
|
return nil, ErrFactory
|
|
case "nil":
|
|
return nil, nil
|
|
case "panic":
|
|
panic(ErrFactory)
|
|
}
|
|
return func(next httpx.Handler) httpx.Handler {
|
|
return func(c *httpx.Context) error {
|
|
if err := deps.Access().Check(c.Context()); err != nil {
|
|
return err
|
|
}
|
|
return next(c)
|
|
}
|
|
}, nil
|
|
}
|