예제 #1
0
        private AuthorizationContext AuthorizationContextFactory(RequestContext requestContext, string controllerName, string actionName, string areaName)
        {
            ControllerContext controllerContext = controllerContextCache.GetControllerContext(requestContext, controllerName, areaName);

            if (controllerContext == null)
            {
                return(null);
            }

            IController controller = controllerContext.Controller;

            if (controller != null)
            {
                var controllerTypeName = controller.GetType().Name;

                controllerName = controllerTypeName.Substring(0, controllerTypeName.Length - "Controller".Length);
            }

            ControllerDescriptor controllerDescriptor = controllerDescriptorCache.GetControllerDescriptor(controllerName, areaName);

            if (controllerDescriptor == null)
            {
                return(null);
            }

            ActionDescriptor actionDescriptor = controllerDescriptor.FindAction(controllerContext, actionName);

            if (actionDescriptor == null)
            {
                return(null);
            }

            return(new AuthorizationContext(controllerContext, actionDescriptor));
        }
        private AuthorizationContext AuthorizationContextFactory(RequestContext requestContext, string controllerName, string actionName, string areaName)
        {
            ControllerContext controllerContext = controllerContextCache.GetControllerContext(requestContext, controllerName, areaName);

#if MVC1
            if (controllerContext == null)
            {
                return(null);
            }

            return(new AuthorizationContext(controllerContext));
#else
            ControllerDescriptor controllerDescriptor = controllerDescriptorCache.GetControllerDescriptor(controllerName, areaName);
            if (controllerContext == null || controllerDescriptor == null)
            {
                return(null);
            }

            ActionDescriptor actionDescriptor = controllerDescriptor.FindAction(controllerContext, actionName);
            if (actionDescriptor == null)
            {
                return(null);
            }

            return(new AuthorizationContext(controllerContext, actionDescriptor));
#endif
        }
        public void GetControllerContext_should_return_null_if_no_such_controller()
        {
            var context = controllerContextCache.GetControllerContext(requestContext, "Fake", "");

            context.ShouldBeNull();
        }