// Copyright (c) 2024 Mattermost Community Enterprise // Registration of Access Control implementation package access_control import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/einterfaces" ) // AccessControlFactory is a function type that creates an AccessControlServiceInterface type AccessControlFactory func(store store.Store, config func() *model.Config, logger mlog.LoggerIFace) einterfaces.AccessControlServiceInterface // NewAccessControlFactory returns a factory function for creating AccessControl interfaces func NewAccessControlFactory() AccessControlFactory { return func(store store.Store, config func() *model.Config, logger mlog.LoggerIFace) einterfaces.AccessControlServiceInterface { cfg := &AccessControlConfig{ Store: store, Config: config, Logger: logger, } return NewAccessControlInterface(cfg) } } // CreateAccessControlInterface creates a new AccessControl interface directly func CreateAccessControlInterface(store store.Store, config func() *model.Config, logger mlog.LoggerIFace) einterfaces.AccessControlServiceInterface { cfg := &AccessControlConfig{ Store: store, Config: config, Logger: logger, } return NewAccessControlInterface(cfg) }