Beispiel #1
0
        public virtual object[] GetGroups(HttpContext context)
        {
            YZRequest request         = new YZRequest(context);
            bool      excludeEveryone = request.GetBool("excludeEveryone", false);
            string    addtosid        = request.GetString("addtosid", null);

            SecurityGroupCollection groups = new SecurityGroupCollection();
            bool writePerm;

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();

                writePerm = SecurityManager.CheckPermision(cn, WellKnownRSID.SecurityGroupRoot, BPMPermision.Write);
                if (SecurityManager.CheckPermision(cn, WellKnownRSID.SecurityGroupRoot, BPMPermision.Read))
                {
                    groups = GroupManager.GetSecurityGroups(cn);
                }
            }

            List <object> rv = new List <object>();

            foreach (SecurityGroup group in groups)
            {
                if (excludeEveryone && group.SID == WellKnownSID.Everyone)
                {
                    continue;
                }

                if (!String.IsNullOrEmpty(addtosid) && group.SID == addtosid)
                {
                    continue;
                }

                rv.Add(new
                {
                    GroupName = group.GroupName,
                    SID       = group.SID,
                    perm      = new {
                        Delete = writePerm && !group.IsSystemGroup
                    }
                });
            }

            return(rv.ToArray());
        }
        public static SecurityGroupCollection GetSecurityGroups(ISecurityContext securityContext, IMQ1Identity identity, ProcessDefinition processDefinition, IEnumerable<SecurityColumnDescriptor> fields = null)
        {
            var groups = new SecurityGroupCollection();

            if (Utils.CurrentUserHasAdministratorRights)
                return groups;

            if (securityContext == null || processDefinition == null || identity == null)
                return groups;

            var fieldDefinitions = new List<IBaseFieldDefinition>();
            var fieldList = fields != null ? fields.ToList() : null;

            if (fields != null && fieldList.Any())
            {
                foreach (var fieldName in fieldList.Select(x => x.ColumnName))
                {
                    try
                    {
                        var field = processDefinition.GetField(fieldName);
                        fieldDefinitions.Add(field);
                    }
                    catch (ArgumentException)
                    {
                    }
                }
            }
            else
            {
                fieldDefinitions.AddRange(
                    processDefinition.GetAllFields());
            }

            foreach (var fieldDefinition in fieldDefinitions)
            {
                var canAccessData = CanAccessField(securityContext, fieldDefinition, identity);

                var securityConfigs = canAccessData 
                    ? GetSecurityConfigsForField(securityContext, fieldDefinition, identity) 
                    : new List<SecurityConfig>();

                SecurityColumnDescriptor columnDescriptor = null;
                if (fieldList != null)
                    columnDescriptor = fieldList.FirstOrDefault(x => x.ColumnName == fieldDefinition.SystemName);

                if (columnDescriptor == null)
                    columnDescriptor = new SecurityColumnDescriptor(fieldDefinition.SystemName);

                groups.AddColumnSecurityConfigs(columnDescriptor, securityConfigs, canAccessData);
            }

            return groups;
        }
Beispiel #3
0
 private void SaveUserGroups(SecurityGroupCollection sgc)
 {
     throw new NotImplementedException();
 }
Beispiel #4
0
 private void SaveUserGroups(SecurityGroupCollection sgc)
 {
     
 }