public SecurityGroup(SecurityColumnDescriptor columnDescriptor, IList<SecurityConfig> securityConfigs, bool canAccessColumnData, string pageFlagName, string fullSetFlagName) { Columns = new List<SecurityColumnDescriptor> { columnDescriptor }; CanAccessColumnData = canAccessColumnData; SecurityConfigs = securityConfigs; PageGroupFlagName = pageFlagName; FullSetGroupFlagName = fullSetFlagName; }
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; }