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) }