package ipc

import (
	"fmt"

	"v.io/core/veyron2/security"
)

// defaultAuthorizer implements a security.Authorizer with an authorization
// policy that requires one end of the RPC to have a blessing that makes it a
// delegate of the other.
type defaultAuthorizer struct{}

func (defaultAuthorizer) Authorize(ctx security.Context) error {
	var (
		localForContext  = ctx.LocalBlessings().ForContext(ctx)
		remote           = ctx.RemoteBlessings()
		remoteForContext = remote.ForContext(ctx)
	)
	// Authorize if any element in localForContext is a "delegate of" (i.e., has been
	// blessed by) any element in remote, OR vice-versa.
	for _, l := range localForContext {
		if security.BlessingPattern(l).MatchedBy(remoteForContext...) {
			// l is a delegate of an element in remote.
			return nil
		}
	}
	for _, r := range remoteForContext {
		if security.BlessingPattern(r).MatchedBy(localForContext...) {
			// r is a delegate of an element in localForContext.
			return nil
		}
	}

	// TODO(ataly, ashankar, caprita): Below we implicitly invoke the String() on
	// remote blessings in order to construct thre error messsage. This is somewhat
	// breaking encapsulation as the String() method is hidden from the public API
	// and is only meant for debugging purposes. Should we make the 'String' method
	// public?
	return fmt.Errorf("all valid blessings for this request: %v (out of %v) are disallowed by the policy %v (out of %v)", remoteForContext, remote, localForContext, ctx.LocalBlessings())
}
