NewChainEngine returns a chain of RBAC engines, used to make authorization decisions on incoming RPCs. Returns a non-nil error for invalid policies.
(policies []*v3rbacpb.RBAC, policyName string)
| 54 | // NewChainEngine returns a chain of RBAC engines, used to make authorization |
| 55 | // decisions on incoming RPCs. Returns a non-nil error for invalid policies. |
| 56 | func NewChainEngine(policies []*v3rbacpb.RBAC, policyName string) (*ChainEngine, error) { |
| 57 | engines := make([]*engine, 0, len(policies)) |
| 58 | for _, policy := range policies { |
| 59 | engine, err := newEngine(policy, policyName) |
| 60 | if err != nil { |
| 61 | return nil, err |
| 62 | } |
| 63 | engines = append(engines, engine) |
| 64 | } |
| 65 | return &ChainEngine{chainedEngines: engines}, nil |
| 66 | } |
| 67 | |
| 68 | func (cre *ChainEngine) logRequestDetails(rpcData *rpcData) { |
| 69 | if logger.V(2) { |