public void AssertAllActionsAreConfigured(Assembly[] assemblies)
        {
            var assemblyScanner = new AssemblyScanner();

            assemblyScanner.Assemblies(assemblies);
            assemblyScanner.With <ControllerTypeScanner>();

            var controllerTypes = assemblyScanner.Scan();

            var unconfiguredActions = (
                from c in controllerTypes
                from a in c.GetActionMethods()
                let actionName = a.GetActionName()
                                 let controllerName = c.GetControllerName()
                                                      where PolicyContainers.GetContainerFor(controllerName, actionName) == null
                                                      select new { ControllerName = controllerName, ActionName = actionName }
                ).ToList();

            if (unconfiguredActions.Any())
            {
                var errorMessageBuilder = new StringBuilder();
                unconfiguredActions.Each(a =>
                                         errorMessageBuilder.AppendLine("- Security has not been configured for {0} action {1}.".FormatWith(a.ControllerName, a.ActionName))
                                         );
                throw new ConfigurationErrorsException(errorMessageBuilder.ToString());
            }
        }
示例#2
0
        public IPolicyContainerConfiguration ForAllControllersInAssembly(params Assembly[] assemblies)
        {
            var assemblyScanner = new AssemblyScanner();

            assemblyScanner.Assemblies(assemblies);
            assemblyScanner.With <ControllerTypeScanner>();
            var controllerTypes = assemblyScanner.Scan();

            return(CreateConventionPolicyContainerFor(controllerTypes));
        }
示例#3
0
        public IPolicyContainerConfiguration ForActionsMatching(Func <ControllerActionInfo, bool> actionFilter, params Assembly[] assemblies)
        {
            var assemblyScanner  = new AssemblyScanner();
            var assembliesToScan = assemblies.ToList();

            if (assembliesToScan.Any())
            {
                assemblyScanner.Assemblies(assemblies);
            }
            else
            {
                assemblyScanner.TheCallingAssembly();
            }

            assemblyScanner.With <ControllerTypeScanner>();
            var controllerTypes = assemblyScanner.Scan();

            return(CreateConventionPolicyContainerFor(controllerTypes, actionFilter));
        }
示例#4
0
        private IPolicyContainerConfiguration ForAllControllersInheriting <TController>(Func <string, bool> actionFilter, IEnumerable <Assembly> assemblies) where TController : Controller
        {
            var controllerType = typeof(TController);

            var assembliesToScan = assemblies.ToList();

            if (!assembliesToScan.Any())
            {
                assembliesToScan.Add(controllerType.Assembly);
            }

            var assemblyScanner = new AssemblyScanner();

            assemblyScanner.Assemblies(assembliesToScan);
            assemblyScanner.With(new ControllerTypeScanner(controllerType));
            var controllerTypes = assemblyScanner.Scan();

            Func <ControllerActionInfo, bool> filter = info => actionFilter.Invoke(info.ActionName);

            return(CreateConventionPolicyContainerFor(controllerTypes, filter));
        }
        public void AssertAllActionsAreConfigured(Assembly[] assemblies)
        {
            var assemblyScanner = new AssemblyScanner();
            assemblyScanner.Assemblies(assemblies);
            assemblyScanner.With<ControllerTypeScanner>();

            var controllerTypes = assemblyScanner.Scan();

            var unconfiguredActions = (
                from c in controllerTypes
                from a in c.GetActionMethods()
                let actionName = a.GetActionName()
                let controllerName = c.GetControllerName()
                where PolicyContainers.GetContainerFor(controllerName, actionName) == null
                select new { ControllerName = controllerName, ActionName = actionName }
                ).ToList();

            if (unconfiguredActions.Any())
            {
                var errorMessageBuilder = new StringBuilder();
                unconfiguredActions.Each(a =>
                    errorMessageBuilder.AppendLine("- Security has not been configured for {0} action {1}.".FormatWith(a.ControllerName, a.ActionName))
                );
                throw new ConfigurationErrorsException(errorMessageBuilder.ToString());
            }
        }