public CFEntity UpdateEntityAccessGroups(CFEntity entity, EntityAccessDefinitionsViewModel entityAccessVM)
        {
            List <CFAccessGroup> accessGroups = new List <CFAccessGroup>();

            foreach (var ag in entityAccessVM.SelectedAccessGroups)
            {
                CFAccessGroup group = new CFAccessGroup();
                //group.AccessGuids = new List<Guid>() { Guid.Parse(ag.userId) };
                group.AccessGuid = Guid.Parse(ag.userId);
                group.AccessDefinition.AccessModes = (AccessMode)ag.AccessModesNum;
                if (ag.AccessMode != null)
                {
                    group.AccessDefinition.Name = ag.AccessMode.Substring(0, ag.AccessMode.LastIndexOf("-"));
                }
                accessGroups.Add(group);
            }

            entity.AccessGroups     = accessGroups;
            entity.BlockInheritance = entityAccessVM.BlockInheritance;

            // fetch solr entry by cfentity mapped guid
            SolrNet.SolrQueryResults <Dictionary <string, object> > mapedEntity;
            mapedEntity = SolrService.SolrOperations.Query("id:" + entity.MappedGuid);

            mapedEntity.First();
            // remove all access entries

            return(entity);
        }
        public new void SetAccess(Guid guid, AccessMode accessMode, bool isInherited = false)
        {
            //XXX Check control permission
            //User.Identity.IsAuthenticated
            CFAccessGroup accessGroup = GetAccessGroup(guid);

            if (accessGroup == null)
            {
                base.SetAccess(guid, accessMode, isInherited);
            }
            else if (accessGroup.IsInherited == false && isInherited == true)
            {
                return;
            }
            else
            {
                List <CFAccessGroup> accessGroups = AccessGroups.ToList();
                accessGroups.Remove(accessGroup);
                CFAccessGroup newAccessGroup = new CFAccessGroup();
                newAccessGroup.IsInherited = isInherited;
                newAccessGroup.Guid        = guid.ToString();
                newAccessGroup.AccessDefinition.AccessModes = accessMode;

                if (accessGroup.IsInherited == true && isInherited == true)
                {
                    AccessMode inheritedAccessMode = RecalculateInheritedPermissions(guid);
                    newAccessGroup.AccessDefinition.AccessModes |= inheritedAccessMode;
                }

                accessGroups.Add(newAccessGroup);
                AccessGroups = accessGroups;
            }
        }
示例#3
0
        public CFEntity UpdateEntityAccessGroups(CFEntity entity, EntityAccessDefinitionsViewModel entityAccessVM)
        {
            List <CFAccessGroup> accessGroups = new List <CFAccessGroup>();

            foreach (var ag in entityAccessVM.SelectedAccessGroups)
            {
                CFAccessGroup group = new CFAccessGroup();
                group.AccessGuids = new List <Guid>()
                {
                    Guid.Parse(ag.userId)
                };
                group.AccessDefinition.AccessModes = (AccessMode)ag.AccessModesNum;
                if (ag.AccessMode != null)
                {
                    group.AccessDefinition.Name = ag.AccessMode.Substring(0, ag.AccessMode.LastIndexOf("-"));
                }


                accessGroups.Add(group);
            }
            entity.AccessGroups = accessGroups;

            entity.BlockInheritance = entityAccessVM.BlockInheritance;

            return(entity);
        }
示例#4
0
        public void SetAccess(Guid guid, AccessMode accessMode, bool isInherited = false)
        {
            // At this point accessGroup is already part of the AccessGroups list
            CFAccessGroup accessGroup = GetOrCreateAccess(guid);

            accessGroup.IsInherited = isInherited;
            accessGroup.AccessGuid  = guid;
            accessGroup.AccessDefinition.AccessModes = accessMode;
        }
示例#5
0
        public CFAccessGroup GetOrCreateAccess(Guid guid)
        {
            CFAccessGroup accessGroup = GetAccessGroup(guid);

            if (accessGroup == null)
            {
                accessGroup = new CFAccessGroup();
                List <CFAccessGroup> accessGroups = AccessGroups.ToList();
                accessGroups.Add(accessGroup);
                AccessGroups = accessGroups;
            }

            return(accessGroup);
        }
        protected AccessMode RecalculateInheritedPermissions(Guid guid)
        {
            AccessMode accessMode = AccessMode.None;

            foreach (CFAggregation parent in ParentMembers)
            {
                CFAccessGroup accessGroup = parent.AccessGroups
                                            .Where(x => x.Guid == guid.ToString()).FirstOrDefault();
                if (accessGroup != null)
                {
                    accessMode = accessMode | accessGroup.AccessDefinition.AccessModes;
                }
            }

            return(accessMode);
        }
示例#7
0
 public void Initialize()
 {
     AccessGroup = new CFAccessGroup();
 }
 protected override void OnSetup()
 {
     AccessGroup = new CFAccessGroup();
 }