pomerium/pkg/contextutil/policy.go
Caleb Doxsey 3c63b6c028
authorize: add policy error details for custom error messages (#3542)
* authorize: add policy error details for custom error messages

* remove fmt.Println

* fix tests

* add docs
2022-08-09 14:46:31 -06:00

25 lines
849 B
Go

package contextutil
import "context"
// A PolicyEvaluationTrace traces a policy evaluation.
type PolicyEvaluationTrace struct {
ID string `json:"id"`
Explanation string `json:"explanation"`
Remediation string `json:"remediation"`
Allow bool `json:"allow"`
Deny bool `json:"deny"`
}
type policyEvaluationTraceKey struct{}
// GetPolicyEvaluationTraces gets the policy evaluation traces from a context.
func GetPolicyEvaluationTraces(ctx context.Context) []PolicyEvaluationTrace {
v, _ := ctx.Value(policyEvaluationTraceKey{}).([]PolicyEvaluationTrace)
return v
}
// WithPolicyEvaluationTraces attaches policy evaluation traces to a context.
func WithPolicyEvaluationTraces(ctx context.Context, traces []PolicyEvaluationTrace) context.Context {
return context.WithValue(ctx, policyEvaluationTraceKey{}, traces)
}