コード例 #1
0
        private ApplicationOperation CreateOrUpdateOperation(string name, string parent, string type,
                                                             bool isAvailableToAllAuthorizedUsers,
                                                             bool isAvailableToAnonymous, IEnumerable <ApplicationPermission> perms, Repository repo)
        {
            if (_applicationOperationDictionary == null)
            {
                _applicationOperationDictionary = new ConcurrentDictionary <string, ApplicationOperation>();
                var applicationOperations = repo.Get <ApplicationOperation>(a => a.Name != null);
                foreach (ApplicationOperation item in applicationOperations)
                {
                    string key = GetApplicationOperationKey(item.Name, item.ParentControllerName, item.Type);
                    if (!_applicationOperationDictionary.ContainsKey(key))
                    {
                        _applicationOperationDictionary.TryAdd(key, item);
                    }
                }
            }
            ApplicationOperation op = null;
            string currentKey       = GetApplicationOperationKey(name, parent, type);
            bool   update           = false;

            if (_applicationOperationDictionary.ContainsKey(currentKey))
            {
                op = _applicationOperationDictionary[currentKey];
                if (op.IsAvailableToAllAuthorizedUsers != isAvailableToAllAuthorizedUsers)
                {
                    op.IsAvailableToAllAuthorizedUsers = isAvailableToAllAuthorizedUsers;
                    update = true;
                }
                if (op.IsAvailableToAnonymous != isAvailableToAnonymous)
                {
                    op.IsAvailableToAnonymous = isAvailableToAnonymous;
                    update = true;
                }
                List <ApplicationPermission> applicationPermissions = op.Permissions.Where(p => !p.IsCustom).ToList();
                HandleApplicationPermissions <ApplicationOperation>(op, applicationPermissions, perms, ref update);
            }
            else
            {
                update  = true;
                op      = new ApplicationOperation();
                op.Name = name;
                op.Type = type;
                op.IsAvailableToAllAuthorizedUsers = isAvailableToAllAuthorizedUsers;
                op.IsAvailableToAnonymous          = isAvailableToAnonymous;
                op.ParentControllerName            = parent;
                if (perms != null)
                {
                    foreach (var p in perms)
                    {
                        op.AddPermissions(p);
                    }
                }
            }
            if (update)
            {
                repo.Save(op);
            }
            return(op);
        }
コード例 #2
0
        public void Initialize()
        {
            context = new ClientContext();
            factory = new Mock <IApplicationFactory>();
            monitor = new Mock <IApplicationMonitor>();
            logger  = new Mock <ILogger>();
            text    = new Mock <IText>();

            context.Settings = new AppSettings();

            sut = new ApplicationOperation(context, factory.Object, monitor.Object, logger.Object, text.Object);
        }
コード例 #3
0
        public ActionResult <ApplicationOperationDTO> PostOperation(ApplicationOperationDTO applicationOperationDTO)
        {
            var manager = ServiceLocator.Current.GetInstance <IMiniSessionService>();
            var repo    = new Repository(manager);
            var applicationOperation = new ApplicationOperation();

            applicationOperation.IsAvailableToAllAuthorizedUsers = applicationOperationDTO.IsAvailableToAllAuthorizedUsers;
            applicationOperation.IsAvailableToAnonymous          = applicationOperationDTO.IsAvailableToAnonymous;
            applicationOperation.Name = applicationOperationDTO.Name;
            applicationOperation.ParentControllerName = applicationOperationDTO.ParentControllerName;
            applicationOperation.Type = applicationOperationDTO.Type;
            foreach (var permissionDTO in applicationOperationDTO.Permissions)
            {
                var permission = repo.GetById <ApplicationPermission>(permissionDTO.Id);
                applicationOperation.Permissions.Add(permission);
            }
            repo.Save <ApplicationOperation>(applicationOperation);
            manager.Session.Flush();
            return(CreatedAtAction("PostOperation", new { id = applicationOperation.Id }, applicationOperation));
        }
コード例 #4
0
        public void ApplicationOperationTest()
        {
            var operation = new ApplicationOperation {
                Id   = 0,
                Name = "name",
                ParentControllerName = "parent",
                Type = "type",
                IsAvailableToAnonymous          = true,
                IsAvailableToAllAuthorizedUsers = true,
                Permissions = new List <ApplicationPermission>()
            };

            Assert.AreEqual(0, operation.Id);
            Assert.AreEqual("name", operation.Name);
            Assert.AreEqual("parent", operation.ParentControllerName);
            Assert.AreEqual("type", operation.Type);
            Assert.AreEqual(true, operation.IsAvailableToAnonymous);
            Assert.AreEqual(true, operation.IsAvailableToAllAuthorizedUsers);
            Assert.IsNotNull(operation.Permissions);
        }
コード例 #5
0
 public ApplicationConfig(string sourcePath, string targetPath, ApplicationOperation operation)
 {
     SourcePath = sourcePath;
     TargetPath = targetPath;
     Operation  = operation;
 }
コード例 #6
0
 /// <summary>
 /// Contains the information for performing a Application-level operation (e.g. switch window)
 /// </summary>
 /// <param name="window">The Window to base the action on (most likely to be the currently active window) </param>
 /// <param name="operation">The operation to perfrom (e.g. switch window) </param>
 public ApplicationOperationEventArgs(Window window, ApplicationOperation operation)
 {
     Window    = window;
     Operation = operation;
 }
コード例 #7
0
 public string GetOperationDictionaryKey(ApplicationOperation operation)
 {
     return
         (GetOperationDictionaryKey(operation.Type, operation.Name, operation.ParentControllerName));
 }