public override bool IsMemberReadGranted(Type requestedType, string propertyName,
                                          SecurityContextList securityContexts) {
     ITypeInfo typeInfo = XafTypesInfo.Instance.FindTypeInfo(requestedType);
     IMemberInfo memberInfo = typeInfo.FindMember(propertyName);
     if (memberInfo.GetPath().Any(currentMemberInfo =>!SecuritySystem.IsGranted(new MemberAccessPermission(
                                                                      currentMemberInfo.Owner.Type,
                                                                      currentMemberInfo.Name,
                                                                      MemberOperation.Read)))) {
         return false;
     }
     return base.IsMemberReadGranted(requestedType, propertyName, securityContexts);
 }
 public override bool IsMemberReadGranted(Type requestedType, string propertyName,
                                          SecurityContextList securityContexts) {
     ITypeInfo typeInfo = XafTypesInfo.Instance.FindTypeInfo(requestedType);
     IMemberInfo memberInfo = typeInfo.FindMember(propertyName);
     if (memberInfo.GetPath().Any(currentMemberInfo
         => !SecuritySystemExtensions.IsGranted(new MemberAccessPermission(currentMemberInfo.Owner.Type,
             currentMemberInfo.Name, MemberOperation.Read), true))) {
         return false;
     }
     var securityComplex = ((SecurityBase)SecuritySystem.Instance);
     bool isGrantedForNonExistentPermission = securityComplex.IsGrantedForNonExistentPermission;
     securityComplex.IsGrantedForNonExistentPermission = true;
     bool isMemberReadGranted = base.IsMemberReadGranted(requestedType, propertyName, securityContexts);
     securityComplex.IsGrantedForNonExistentPermission = isGrantedForNonExistentPermission;
     return isMemberReadGranted;
 }
        public override bool IsMemberReadGranted(Type requestedType, string propertyName,
                                                 SecurityContextList securityContexts)
        {
            ITypeInfo   typeInfo   = XafTypesInfo.Instance.FindTypeInfo(requestedType);
            IMemberInfo memberInfo = typeInfo.FindMember(propertyName);

            if (memberInfo.GetPath().Any(currentMemberInfo
                                         => !SecuritySystemExtensions.IsGranted(new MemberAccessPermission(currentMemberInfo.Owner.Type,
                                                                                                           currentMemberInfo.Name, MemberOperation.Read), true)))
            {
                return(false);
            }
            var  securityComplex = ((SecurityBase)SecuritySystem.Instance);
            bool isGrantedForNonExistentPermission = securityComplex.IsGrantedForNonExistentPermission;

            securityComplex.IsGrantedForNonExistentPermission = true;
            bool isMemberReadGranted = base.IsMemberReadGranted(requestedType, propertyName, securityContexts);

            securityComplex.IsGrantedForNonExistentPermission = isGrantedForNonExistentPermission;
            return(isMemberReadGranted);
        }
 public ConditionalObjectAccessPermission(Type objectType, ObjectAccess access, SecurityContextList contexts) : base(objectType, access, contexts)
 {
 }
 // Фрагмент для MemberAccessPermissionItem
 public override bool IsMemberReadGranted(Type requestedType, string propertyName, SecurityContextList securityContexts)
 {
     try {
         ITypeInfo   typeInfo   = XafTypesInfo.Instance.FindTypeInfo(requestedType);
         IMemberInfo memberInfo = typeInfo.FindMember(propertyName);
         foreach (IMemberInfo currentMemberInfo in memberInfo.GetPath())
         {
             if (!SecuritySystem.IsGranted(new MemberAccessPermission(currentMemberInfo.Owner.Type, currentMemberInfo.Name, MemberOperation.Read)))
             {
                 return(false);
             }
         }
         return(base.IsMemberReadGranted(requestedType, propertyName, securityContexts));
     } catch (Exception ex) {
         throw new Exception(ex.ToString());
     }
 }
 static ObjectAccessPermission MergeTargetWithConditionalPermission(ObjectAccessPermission targetPermission, SecurityContextList contexts)
 {
     try {
         if (contexts.TargetObjectContext != null && contexts.TargetObjectContext.TargetObject != null)
         {
             object targetObject = contexts.TargetObjectContext.TargetObject;
             ConditionalObjectAccessPermission validatedConditionalPermission = ConditionalPermission.FilterUnfitItems(targetObject);
             return((ObjectAccessPermission)validatedConditionalPermission.Union <ObjectAccessPermission>(targetPermission));
         }
         return(targetPermission);
     } catch (Exception ex) {
         throw new Exception(ex.ToString());
     }
 }