/// <summary> /// Initializes a new instance of the <see cref="PermissionCalculator{TIdentity}" /> class. /// </summary> /// <param name="membershipProvider">The membership provider.</param> /// <param name="orderedPermissionProvider">The ordered permissions provider.</param> public PermissionCalculator( IMembershipProvider <TIdentity> membershipProvider, IOrderedPermissionProvider <TIdentity> orderedPermissionProvider) { _membershipProvider = membershipProvider; _orderedPermissionProvider = orderedPermissionProvider; }
/// <summary> /// Gets the permissions. /// </summary> /// <param name="protectedObject">The protected object.</param> /// <param name="protectedObjectMembership">The protected object membership.</param> /// <param name="orderedPermissionProvider">The ordered permission provider.</param> /// <param name="context">The context.</param> /// <returns></returns> internal static List <IPermission <TIdentity> > GetPermissions( TIdentity protectedObject, IObjectIdentity <TIdentity>[][] protectedObjectMembership, IOrderedPermissionProvider <TIdentity> orderedPermissionProvider, PermissionsCalculationContext <TIdentity> context) { if (context == null) { return(orderedPermissionProvider.GetOrderedPermissions(protectedObjectMembership).ToList()); } if (context._permissionCache.TryGetValue(protectedObject, out List <IPermission <TIdentity> > result)) { return(result); } result = orderedPermissionProvider.GetOrderedPermissions(protectedObjectMembership).ToList(); context._permissionCache.Add(protectedObject, result); return(result); }