static void ApplicationOnLoggedOn(object sender, LogonEventArgs logonEventArgs)
        {
            var xafApplication = ((XafApplication)sender);
            var modelWinLayoutManagerOptions = ((IModelWinLayoutManagerOptions)xafApplication.Model.Options.LayoutManagerOptions);

            modelWinLayoutManagerOptions.CustomizationEnabled = SecuritySystem.IsGranted(new OverallCustomizationAllowedPermissionRequest());
        }
 protected override void OnActivated()
 {
     base.OnActivated();
     saImportData.Active.SetItemValue("Security",
                                      SecuritySystem.IsGranted(View.ObjectSpace, typeof(InternalInvoice), SecurityOperations.Create, null,
                                                               null));
 }
예제 #3
0
        protected override void OnActivated()
        {
            base.OnActivated();
            if (!SecuritySystem.IsGranted(new IsAdministratorPermissionRequest()))
            {
                var isGranted = SecuritySystem.IsGranted(new MyDetailsOperationRequest(new MyDetailsPermission(Modifier.Allow)));

                _myDetailsController = Frame.GetController <MyDetailsController>();
                if (_myDetailsController != null)
                {
                    _myDetailsController.Active.SetItemValue(KeyDisable, !isGranted);
                }
                _showNavigationItemController = Frame.GetController <ShowNavigationItemController>();
                if (_showNavigationItemController != null)
                {
                    _myDetailsItem = FindMyDetailsItem(_showNavigationItemController.ShowNavigationItemAction.Items);
                    if (_myDetailsItem != null)
                    {
                        _myDetailsItem.Active.SetItemValue(KeyDisable, !isGranted);
                    }
                }
            }
            else
            {
                Active["IsAdmin"] = false;
            }
        }
예제 #4
0
 public XafApplication Build()
 {
     try {
         var typesInfo = _buildTypesInfoSystem.Invoke(_moduleName);
         ReflectionHelper.AddResolvePath(_assemblyPath);
         var assembly     = ReflectionHelper.GetAssembly(Path.GetFileNameWithoutExtension(_moduleName), _assemblyPath);
         var assemblyInfo = typesInfo.FindAssemblyInfo(assembly);
         typesInfo.LoadTypes(assembly);
         var findTypeInfo        = typesInfo.FindTypeInfo(typeof(XafApplication));
         var findTypeDescendants = ReflectionHelper.FindTypeDescendants(assemblyInfo, findTypeInfo, false);
         var instance            = SecuritySystem.Instance;
         var info = XafTypesInfo.Instance;
         typesInfo.AssignAsInstance();
         var xafApplication = ((XafApplication)Enumerator.GetFirst(findTypeDescendants).CreateInstance(new object[0]));
         SecuritySystem.SetInstance(instance);
         SetConnectionString(xafApplication);
         if (!_withOutObjectSpaceProvider)
         {
             var objectSpaceProviders = ((IList <IObjectSpaceProvider>)xafApplication.GetFieldValue("objectSpaceProviders"));
             objectSpaceProviders.Add(new MyClass(xafApplication));
         }
         info.AssignAsInstance();
         return(xafApplication);
     } finally {
         ReflectionHelper.RemoveResolvePath(_assemblyPath);
     }
 }
예제 #5
0
        public void CommunicationMonitor_HearthBeat()
        {
            var testDp               = new TestDp(DatabaseStorage.CreateEmpty());
            var messageProvider      = new DefaultMessageProvider(new MessageSenderManager());
            var missingEntityHandler = new MissingEntityHandler();
            var messagingOptions     = Options.Create(new MessagingOptions()
            {
                CommunicationMonitorRunningPeriodInSeconds = 1
            });
            var securitySystem = new SecuritySystem(testDp, messageProvider, missingEntityHandler,
                                                    new SecurityConfiguration(), messagingOptions.Value);
            var dataHandler           = new DataHandler(testDp, messagingOptions);
            var communicationMonitor  = new CommunicationMonitor(dataHandler, messagingOptions);
            var activityHistory       = new SecurityActivityHistoryController();
            var securityActivityQueue = new SecurityActivityQueue(securitySystem, communicationMonitor, dataHandler, activityHistory);

            // ACTION
            var communicationMonitorAcc = new ObjectAccessor(communicationMonitor);

            communicationMonitorAcc.Invoke("Timer_Elapsed");

            // ASSERT
            Assert.IsTrue(testDp.IsCleanupSecurityActivitiesCalled);
            Assert.IsTrue(testDp.IsGetLastSecurityActivityIdCalled);
        }
예제 #6
0
 private void CreateButtons()
 {
     if (IsSelector)
     {
         DataSelector.Buttons.Buttons.Clear();
         if (PropertyValue == null)
         {
             if (ObjectSpace.CanInstantiate(MemberInfo.MemberType) && SecuritySystem.IsGranted(new ClientPermissionRequest(MemberInfo.MemberType, null, null, SecurityOperations.Create)))
             {
                 DataSelector.Buttons.AddButton("<span class='glyphicon glyphicon-plus text-info'></span>").OnExecution += XafBootstrapDropdownEdit_AddNew;
             }
         }
         else
         {
             DataSelector.Buttons.AddButton("<span class='glyphicon glyphicon-trash text-danger'></span>").OnExecution += XafBootstrapDropdownEdit_Remove;
         }
     }
     else
     {
         DropDown.Buttons.Buttons.Clear();
         if (PropertyValue == null)
         {
             if (ObjectSpace.CanInstantiate(MemberInfo.MemberType) && SecuritySystem.IsGranted(new ClientPermissionRequest(MemberInfo.MemberType, null, null, SecurityOperations.Create)))
             {
                 DropDown.Buttons.AddButton("<span class='glyphicon glyphicon-plus text-info'></span>").OnExecution += XafBootstrapDropdownEdit_AddNew;
             }
         }
         else
         {
             DropDown.Buttons.AddButton("<span class='glyphicon glyphicon-trash text-danger'></span>").OnExecution += XafBootstrapDropdownEdit_Remove;
         }
     }
 }
예제 #7
0
        private static void DeleteCheckPermission(int id, SecuritySystem securitySystem)
        {
            Trace.WriteLine("SECDEL> Start check thread id " + id);
            var ctx    = new SecurityContext(TestUser.User1, securitySystem);
            var eid    = Id("E99");
            var caught = false;
            var count  = 0;

            while (!_stopped)
            {
                try
                {
                    var hp = ctx.HasPermission(eid, PermissionType.See);
                    if (hp)
                    {
                        _errors++;
                    }

                    count++;
                }
                catch (EntityNotFoundException)
                {
                    // the entity was deleted in the meantime
                    _stopped = true;
                    caught   = true;
                }
            }

            Trace.WriteLine("SECDEL> End check thread id " + id + ". Catched: " + caught + ". Count: " + count);
        }
예제 #8
0
        internal static SecuritySystem StartTheSystem(ISecurityDataProvider securityDataProvider)
        {
            var messageSenderManager = new MessageSenderManager("asdf");
            // Call SecurityContext starter method.
            //var securitySystem = SecurityContextForConcurrencyTests.StartTheSystem(new SecurityConfiguration
            //{
            //    SecurityDataProvider = securityDataProvider,
            //    MessageProvider = new DefaultMessageProvider(messageSenderManager),
            //    CommunicationMonitorRunningPeriodInSeconds = 31
            //});
            var config           = new SecurityConfiguration();
            var messagingOptions = new MessagingOptions {
                CommunicationMonitorRunningPeriodInSeconds = 31
            };
            var securitySystem = new SecuritySystem(securityDataProvider,
                                                    new DefaultMessageProvider(messageSenderManager),
                                                    new MissingEntityHandler(), config, messagingOptions);

            securitySystem.Start();

            // legacy logic
            // original line: MessageSender.Initialize("asdf");
            //securitySystem.MessageSenderManager = messageSenderManager;

            return(securitySystem);
        }
예제 #9
0
        private static void SaqExercise1(int id, SecuritySystem securitySystem)
        {
            var name  = "WaitB-" + id;
            var count = 0;

            while (!_stopped)
            {
                Thread.Sleep(10);

                if (0 == count % 100)
                {
                    Console.WriteLine("Running time: {0}, errors: {1}. {2} {3}", DateTime.UtcNow - _started, _errors, name, count);
                }

                var _        = new SecurityContext(TestUser.User2, securitySystem);
                var activity = new TestWaitActivity(_rnd.Next(1, 3));
                securitySystem.DataHandler.SaveActivity(activity);

                var method = typeof(SecuritySystem).GetMethod("MessageProvider_MessageReceived", BindingFlags.Instance | BindingFlags.NonPublic);
                if (method == null)
                {
                    throw new ApplicationException("Method not found: MessageProvider_MessageReceived");
                }

                method.Invoke(securitySystem, new object[] { null, new MessageReceivedEventArgs(activity) });
                count++;
            }
        }
예제 #10
0
        private static void MoveExerciseWriter(int id, SecuritySystem securitySystem)
        {
            var name  = "Writer-" + id;
            var count = 0;

            while (!_stopped)
            {
                //Thread.Sleep(1);

                if (0 == count % 10000000)
                {
                    Console.WriteLine("Running time: {0}, errors: {1}. {2} {3}", DateTime.UtcNow - _started, _errors, name, count);
                }

                //---------------------- work

                var ctx      = securitySystem.GeneralSecurityContext;
                var entities = ctx.Cache.Entities;
                var source   = entities[3];
                var target0  = entities[1];
                var target1  = entities[52];

                var target = source.Parent == target0 ? target1 : target0;
                ctx.SecuritySystem.EntityManager.MoveEntity(source.Id, target.Id);

                //----------------------

                count++;
            }
        }
예제 #11
0
        private static void AclExercise2(int id, SecuritySystem securitySystem)
        {
            var name      = "Writer-" + id;
            var ctx       = new SecurityContext(TestUser.User2, securitySystem);
            var count     = 0;
            var permTypes = new[] { PermissionType.Custom01, PermissionType.Custom02 };

            while (!_stopped)
            {
                Thread.Sleep(10);

                if (0 == count % 1000)
                {
                    Console.WriteLine("Running time: {0}, errors: {1}. {2} {3}", DateTime.UtcNow - _started, _errors, name, count);
                }

                var i     = count % 2;
                var perm1 = permTypes[i];
                var perm2 = permTypes[1 - i];

                new AclEditor(ctx)
                .Allow(5, TestUser.User1.Id, false, perm1)
                .Allow(5, TestUser.User1.Id, false, perm2)
                .Apply();

                count++;
            }
        }
예제 #12
0
        private static void AclExercise1(int id, SecuritySystem securitySystem)
        {
            var name  = "Reader-" + id;
            var ctx   = new SecurityContext(TestUser.User2, securitySystem);
            var count = 0;

            while (!_stopped)
            {
                Thread.Sleep(1);

                if (0 == count % 10000)
                {
                    Console.WriteLine("Running time: {0}, errors: {1}. {2} {3}", DateTime.UtcNow - _started, _errors, name, count);
                }

                var ok = ctx.HasPermission(52, PermissionType.See);

                if (!ok)
                {
                    Console.WriteLine("Running time: {0}, errors: {1}. {2} {3}  ERROR", DateTime.UtcNow - _started, ++_errors, name, count);
                }

                count++;
            }
        }
예제 #13
0
        //============================================================================================= 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);
        }
예제 #14
0
            public SimpleSession(SecuritySystem security, FileSystem filesystem, ShellFactory shells, Terminal terminal, int userID)
            {
                this.security   = security;
                this.filesystem = filesystem;
                this.terminal   = terminal;
                this.userID     = userID;

                //get users home dir
                string homepath = security.UserHomeDirectory(userID);

                this.homeDir = (Directory)filesystem.Find(homepath);
                if (this.homeDir == null)
                {
                    throw new Exception("Failed to home users home directory: " + homepath);
                }

                //get shell
                string shellname = security.UserPreferredShell(userID);

                shell = shells.CreateShell(shellname, this);
                if (shell == null)
                {
                    throw new Exception("Failed to find user's preferred shell");
                }
                //TODO  get the shell from a factory
            }
예제 #15
0
 void Start()
 {
     if (parentSystem == null)
     {
         parentSystem = this.transform.GetComponentInParent <SecuritySystem>();
     }
 }
        public void ShouldHaveAtLeastOneChip()
        {
            List<Chip> chips = new List<Chip>();

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
예제 #17
0
        public void ShouldHaveAtLeastOneChip()
        {
            List <Chip> chips = new List <Chip>();

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
예제 #18
0
 bool IsGranted()
 {
     if (((ISecurityComplex)SecuritySystem.Instance).IsNewSecuritySystem())
     {
         return(SecuritySystem.IsGranted(new ModelCombinePermissionRequest(ApplicationModelCombineModifier.Allow)));
     }
     return(SecuritySystemExtensions.IsGranted(new ModelCombinePermission(ApplicationModelCombineModifier.Allow), false));
 }
        public void ShouldHaveChipsDefined()
        {
            List<Chip> chips = null;

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
예제 #20
0
        public void ShouldHaveChipsDefined()
        {
            List <Chip> chips = null;

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
예제 #21
0
 protected void LoginUser_LoggedIn(object sender, EventArgs e)
 {
     //WebApplication.Instance.Start();
     //OR
     using (IObjectSpace os = WebApplication.Instance.CreateObjectSpace())
     {
         SecuritySystem.Logon(os); //Da load o tren
     }
 }
 public override void Dispose()
 {
     if (SecuritySystem.Instance is IDisposable security)
     {
         security.Dispose();
     }
     SecuritySystem.SetInstance(null);
     base.Dispose();
 }
예제 #23
0
        protected override void OnActivated()
        {
            base.OnActivated();
            // Perform various tasks depending on the target View.
            bool isPermitted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace, typeof(News), "RelatedOrganizations", null, SecurityOperations.Write));

            ShowRelatedCustomerAction.Active.SetItemValue("Security", isPermitted);
            RemoveRelatedOrganizationAction.Active.SetItemValue("Security", isPermitted);
        }
예제 #24
0
        protected override void OnActivated()
        {
            base.OnActivated();
            // Perform various tasks depending on the target View.
            bool isPermitted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace, typeof(News), "ShortDescription", null, SecurityOperations.Write));

            AddShortDescriptionAction.Active.SetItemValue("Security", isPermitted);
            //AddShortDescriptionAction.Active.SetItemValue("Security", SecuritySystem.IsGranted(new ClientPermissionRequest(typeof(News), "ShortDescription", ObjectSpace.GetObjectHandle(View.CurrentObject), SecurityOperations.Write)));
        }
예제 #25
0
        public Menue()
        {
            securitySystem = new SecuritySystem();
            con            = new DB_Connection("lia-gaming.de", "POA_2020", "schule", "123");

            InitializeComponent();
            updateClock();

            updateInformation();
        }
        protected virtual bool IsGranted(ITransition iTransition, bool hide)
        {
            var permission = new StateMachineTransitionPermission {
                StateCaption     = iTransition.TargetState.Caption,
                StateMachineName = iTransition.TargetState.StateMachine.Name,
                Hide             = hide,
            };

            return(SecuritySystem.IsGranted(new NoCacheablePermissionRequest(new StateMachineTransitionOperationRequest(permission))));
        }
예제 #27
0
    protected override void Awake()
    {
        base.Awake();
        Transform beamMark1 = transform.Find("BeamMark1");
        Transform beamMark2 = transform.Find("BeamMark2");

        dAngle        = Vector2.SignedAngle(beamMark1.localPosition, beamMark2.localPosition);
        baseDirection = Vector2.SignedAngle(Vector2.right, beamMark1.localPosition);

        securitySystem = FindObjectOfType <SecuritySystem>();
    }
 protected override void SynchItemWithSecurity(DevExpress.ExpressApp.Actions.ChoiceActionItem item)
 {
     if (!SecuritySystem.IsGranted(new NavigationItemPermissionRequest(item.Id)))
     {
         item.Active[SecurityVisibleKey] = false;
     }
     else
     {
         base.SynchItemWithSecurity(item);
     }
 }
        bool IsActive(XpoTransition xpoTransition)
        {
            var permission = new StateMachineTransitionPermission {
                Modifier         = StateMachineTransitionModifier.Allow,
                StateCaption     = xpoTransition.TargetState.Caption,
                StateMachineName = xpoTransition.SourceState.StateMachine.Name,
                Hide             = false
            };

            return(SecuritySystem.IsGranted(new StateMachineTransitionOperationRequest(permission)));
        }
예제 #30
0
        public static SecurityStrategyComplex GetSecurity(string userName)
        {
            AuthenticationStandard  authentication = new AuthenticationStandard();
            SecurityStrategyComplex security       = new SecurityStrategyComplex(typeof(PermissionPolicyUser), typeof(PermissionPolicyRole), authentication);
            //security.RegisterXPOAdapterProviders();
            string password = string.Empty;

            authentication.SetLogonParameters(new AuthenticationStandardLogonParameters(userName, password));
            SecuritySystem.SetInstance(security);
            return(security);
        }
예제 #31
0
        static bool IsNotGranted(IPermission permission)
        {
            var  securityComplex = ((SecurityBase)SecuritySystem.Instance);
            bool isGrantedForNonExistentPermission = securityComplex.IsGrantedForNonExistentPermission;

            securityComplex.IsGrantedForNonExistentPermission = true;
            bool granted = SecuritySystem.IsGranted(permission);

            securityComplex.IsGrantedForNonExistentPermission = isGrantedForNonExistentPermission;
            return(granted);
        }
예제 #32
0
 void ReloadPermissions()
 {
     if (SecuritySystem.Instance is ISecurityComplex)
     {
         if (SecuritySystem.CurrentUser != null && !PermissionsReloaded)
         {
             SecuritySystem.ReloadPermissions();
             PermissionsReloaded = true;
         }
     }
 }
        public void BlueLeftMarker_NoChipsWithBlueOnLeftSide_CannotBeUnlocked()
        {
            List<Chip> chips = new List<Chip>()
            {
                new Chip(SecurityColor.Green, SecurityColor.Blue),
                new Chip(SecurityColor.Orange, SecurityColor.Blue),
                new Chip(SecurityColor.Purple, SecurityColor.Blue)
            };

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
        public void BlueRightMarker_NoChipsWithBlueOnRightSide_CannotBeUnlocked()
        {
            List<Chip> chips = new List<Chip>()
            {
                new Chip(SecurityColor.Blue, SecurityColor.Red),
                new Chip(SecurityColor.Blue, SecurityColor.Yellow),
                new Chip(SecurityColor.Blue, SecurityColor.Green)
            };

            SecuritySystem system = new SecuritySystem(SecurityColor.Blue, SecurityColor.Blue);

            Assert.IsFalse(system.CanBeUnlocked(chips));
        }
예제 #35
0
        // Query of systems in the system table.
        public List<GenericSystem> GetSystems()
        {
            MySqlConnection sqlConnection = new MySqlConnection(connectionString);
            MySqlCommand sqlCmd = sqlConnection.CreateCommand();
            List<GenericSystem> systemList = new List<GenericSystem>();

            try
            {
                sqlConnection.Open();
                sqlCmd.CommandText = "SELECT * FROM SYSTEMS";
                MySqlDataReader rdr = sqlCmd.ExecuteReader();
                while (rdr.Read())
                {
                    if (rdr.GetInt32(1) == 1)
                    {
                        SecuritySystem system = new SecuritySystem(rdr.GetInt32(0));
                        system.Sensors = GetSensors(-1, system.Id);
                        system.Alarms = GetAlarms(-1, system.Id);
                        systemList.Add(system);
                    }
                }
                rdr.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Could not connect to database!");
                Console.WriteLine("{0} Exception caught.", e);
            }
            finally
            {
                sqlConnection.Close();
            }
            return systemList;
        }