github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/accesscontrollist.go (about)

     1  package handler
     2  
     3  import (
     4  	"context"
     5  
     6  	agentcache "github.com/Axway/agent-sdk/pkg/agent/cache"
     7  	apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1"
     8  	management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
     9  	"github.com/Axway/agent-sdk/pkg/watchmanager/proto"
    10  )
    11  
    12  type aclHandler struct {
    13  	agentCacheManager agentcache.Manager
    14  }
    15  
    16  // NewACLHandler creates a Handler for Access Requests
    17  func NewACLHandler(agentCacheManager agentcache.Manager) Handler {
    18  	return &aclHandler{
    19  		agentCacheManager: agentCacheManager,
    20  	}
    21  }
    22  
    23  // Handle processes grpc events triggered for AccessRequests
    24  func (h *aclHandler) Handle(ctx context.Context, _ *proto.EventMeta, resource *apiv1.ResourceInstance) error {
    25  	action := GetActionFromContext(ctx)
    26  	if resource.Kind != management.AccessControlListGVK().Kind {
    27  		return nil
    28  	}
    29  
    30  	if action != proto.Event_DELETED {
    31  		h.agentCacheManager.SetAccessControlList(resource)
    32  		return nil
    33  	}
    34  
    35  	return h.agentCacheManager.DeleteAccessControlList()
    36  }