private SuppressingPiiContext(bool needPiiSuppression, PiiMap piiMap)
 {
     this.needPiiSuppression = needPiiSuppression;
     this.piiMap             = piiMap;
     this.previousContext    = SuppressingPiiContext.currentContext;
     SuppressingPiiContext.currentContext = this;
 }
Пример #2
0
 public static object TryRedact(PropertyDefinition property, object original, PiiMap piiMap)
 {
     if (original == null)
     {
         return(original);
     }
     if (!SuppressingPiiProperty.Initialized || SuppressingPiiProperty.piiDataRedaction == null)
     {
         Type type = original.GetType();
         if (type.IsValueType)
         {
             return(Activator.CreateInstance(type));
         }
         return(null);
     }
     else
     {
         if (!SuppressingPiiProperty.piiDataRedaction.Enable)
         {
             return(original);
         }
         object     result = original;
         MethodInfo redactor;
         if (SuppressingPiiProperty.piiDataRedaction.TryGetRedactor(property, out redactor))
         {
             if (piiMap != null && !SuppressingPiiProperty.piiDataRedaction.NeedAddIntoPiiMap(property, original))
             {
                 piiMap = null;
             }
             if (property.Type.IsArray)
             {
                 result = SuppressingPiiProperty.RedactArray(original, redactor, piiMap);
             }
             else
             {
                 result = SuppressingPiiProperty.RedactSingleOrListValue(original, redactor, piiMap);
             }
         }
         return(result);
     }
 }
Пример #3
0
        private static object RedactArray(object original, MethodInfo redactor, PiiMap piiMap)
        {
            object[] array = new object[3];
            array[0] = original;
            object[] array2 = array;
            object   result = redactor.Invoke(null, array2);

            string[] array3 = (string[])array2[1];
            string[] array4 = (string[])array2[2];
            if (piiMap != null && array3 != null && array4 != null)
            {
                for (int i = 0; i < array3.Length; i++)
                {
                    if (!string.IsNullOrEmpty(array3[i]))
                    {
                        piiMap[array4[i]] = array3[i];
                    }
                }
            }
            return(result);
        }
 internal static IDisposable Create(bool needPiiSuppression, PiiMap piiMap)
 {
     return(new SuppressingPiiContext(needPiiSuppression, piiMap));
 }
Пример #5
0
        private static object RedactSingleValue(object original, MethodInfo redactor, PiiMap piiMap)
        {
            object[] array = new object[3];
            array[0] = original;
            object[] array2 = array;
            object   result = redactor.Invoke(null, array2);
            string   value  = (string)array2[1];
            string   key    = (string)array2[2];

            if (piiMap != null && !string.IsNullOrEmpty(value))
            {
                piiMap[key] = value;
            }
            return(result);
        }
Пример #6
0
        private static object RedactSingleOrListValue(object original, MethodInfo redactor, PiiMap piiMap)
        {
            IList list = original as IList;

            if (list != null)
            {
                bool flag = list is MultiValuedPropertyBase;
                if (list.IsReadOnly)
                {
                    if (!flag)
                    {
                        return(null);
                    }
                    ((MultiValuedPropertyBase)list).SetIsReadOnly(false, null);
                }
                for (int i = 0; i < list.Count; i++)
                {
                    object value = SuppressingPiiProperty.RedactSingleValue(list[i], redactor, piiMap);
                    if (flag && !(original is ProxyAddressCollection))
                    {
                        list.RemoveAt(i);
                        list.Insert(i, value);
                    }
                    else
                    {
                        list[i] = value;
                    }
                }
            }
            else
            {
                original = SuppressingPiiProperty.RedactSingleValue(original, redactor, piiMap);
            }
            return(original);
        }