//============================================================================================= Static API

        public static SecuritySystem StartSecurity(ISecurityDataProvider securityDataProvider,
                                                   IMessageProvider messageProvider,
                                                   IMissingEntityHandler missingEntityHandler,
                                                   MessagingOptions messagingOptions)
        {
            var securityConfig = new SecurityConfiguration
            {
                SystemUserId    = Identifiers.SystemUserId,
                VisitorUserId   = Identifiers.VisitorUserId,
                EveryoneGroupId = Identifiers.EveryoneGroupId,
                OwnerGroupId    = Identifiers.OwnersGroupId
            };

            var securitySystem = new SecuritySystem(securityDataProvider, messageProvider, missingEntityHandler,
                                                    securityConfig, messagingOptions);

            securitySystem.Start();

            SnLog.WriteInformation("Security subsystem started in Search service", EventId.RepositoryLifecycle,
                                   properties: new Dictionary <string, object> {
                { "DataProvider", securityDataProvider.GetType().FullName },
                { "MessageProvider", messageProvider.GetType().FullName }
            });

            return(securitySystem);
        }
Beispiel #2
0
        /// <summary>
        /// Building and connecting necessary LEGO bricks.
        /// One of the possible comfortable solution. Every component is stateless so we can be stored for long time.
        /// </summary>
        public static void StartTheSystem(ISecurityDataProvider securityDataProvider)
        {
            // Get configured or default messaging component and initialize it.
            var messageProvider = ResolveMessageProvider();

            messageProvider.Initialize();
            MessageSender.Initialize(messageProvider.ReceiverName);

            // call the second step
            Debug.WriteLine("SECU> StartTheSystem: " + securityDataProvider.GetType().Name);
            StartTheSystem(securityDataProvider, messageProvider);
        }