Пример #1
0
        /// <summary>
        /// Intercepts the specified invocation.
        /// </summary>
        /// <param name="invocation">The invocation.</param>
        public void Intercept(IInvocation invocation)
        {
            bool canExecute;

            if ((invocation.Method.Name == "Execute" || invocation.Method.Name == "CanExecute") && invocation.Proxy is IFrameworkCommandInfo)
            {
                var frameworkCommandInfo = invocation.Proxy as IFrameworkCommandInfo;
                var resourceRequest      = new ResourceRequest {
                    frameworkCommandInfo.Owner.GetType().FullName, frameworkCommandInfo.Name
                };
                canExecute = _accessControlManager.CanAccess(resourceRequest);
            }
            else
            {
                canExecute = true;
            }
            if (canExecute)
            {
                invocation.Proceed();
            }
            else if (invocation.Method.Name == "CanExecute")
            {
                invocation.ReturnValue = false;
            }
        }
Пример #2
0
        /// <summary>Checks the access.</summary>
        /// <param name="filterContext">The filter context.</param>
        /// <returns>A <see cref="bool"/>.</returns>
        protected virtual bool CheckAccess(AuthorizationContext filterContext)
        {
            var resourceRequest = new ResourceRequest
            {
                filterContext.Controller.GetType().FullName,
                filterContext.ActionDescriptor.ActionName,
                filterContext.HttpContext.Request.HttpMethod
            };

            return(_accessControlManager.CanAccess(resourceRequest));
        }
Пример #3
0
 /// <summary>
 /// Befores the handling request.
 /// </summary>
 /// <param name="context">The context.</param>
 public void BeforeHandlingRequest(RequestProcessingContext context)
 {
     if (context != null && context.Request != null)
     {
         var request  = context.Request;
         var resource = new ResourceRequest {
             request.GetType().FullName
         };
         if (!_accessControlManager.CanAccess(resource))
         {
             throw new InvalidOperationException("You do not have permission to access: " + resource);
         }
     }
 }
Пример #4
0
        public void CanAccess_ResourceThatIsntRegistered_DeniesAccess()
        {
            var canAccess = _accessControlManager.CanAccess(
                new ResourceRequest
            {
                "Foo"
            });

            Assert.IsFalse(canAccess);
        }
        public override object LoadContent(IRegion region, NavigationContext navigationContext)
        {
            var view = base.LoadContent(region, navigationContext);

            var type = view.GetType();

            if (!_accessControlManager.CanAccess(new ResourceRequest {
                type.FullName
            }))
            {
                //Need to reset the Context because it gets cleared when a view is removed from the region
                var regionContext = region.Context;
                region.Remove(view);
                region.Context = regionContext;
                throw new SecurityNavigationAccessDeniedException("Current user does not have access to view:" + type);
            }

            return(view);
        }