Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
0
        /// <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);
        }