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()); } }