//============================================================================================= 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); }
/// <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); }