Ejemplo n.º 1
0
        public void RegisterFilters(IFilterRegistry filterRegistry)
        {
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(EnsureModelExceptionFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(DebugActionFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(SiteActionFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(UserActionFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(LocalizationActionFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(AntiForgeryAuthorizationFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(AreaSkinLayerResultFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(SkinResultFilter));
            filterRegistry.Add(Enumerable.Empty <IFilterCriteria>(), typeof(ErrorExceptionFilter));

            filterRegistry.Add(new[] { new DataFormatFilterCriteria("RSS") }, typeof(RssResultActionFilter));
            filterRegistry.Add(new[] { new DataFormatFilterCriteria("ATOM") }, typeof(AtomResultActionFilter));

            ControllerActionFilterCriteria listActionsCriteria = new ControllerActionFilterCriteria();

            listActionsCriteria.AddMethod <AreaController>(a => a.Find());
            listActionsCriteria.AddMethod <AreaController>(a => a.FindQuery(null));
            listActionsCriteria.AddMethod <AreaController>(a => a.BlogML(null));
            listActionsCriteria.AddMethod <AreaController>(a => a.BlogMLSave(null, null, null));
            listActionsCriteria.AddMethod <CommentController>(c => c.List(0, 0));
            listActionsCriteria.AddMethod <PostController>(p => p.List(null, 0, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListByArchive(0, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListByArea(null, 0, null, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListByAreaAndTag(null, 0, null, null, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListBySearch(null, 0, null, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListByTag(null, 0, null, null));
            listActionsCriteria.AddMethod <PostController>(p => p.ListWithDrafts(null, 0));
            filterRegistry.Add(new[] { listActionsCriteria }, typeof(ArchiveListActionFilter));
            filterRegistry.Add(new[] { listActionsCriteria }, typeof(PageSizeActionFilter));

            ControllerActionFilterCriteria itemActionCriteria = new ControllerActionFilterCriteria();

            itemActionCriteria.AddMethod <PostController>(p => p.Item(null));
            itemActionCriteria.AddMethod <PostController>(p => p.AddComment(null, null, null, null, null, null));
            filterRegistry.Add(new[] { itemActionCriteria }, typeof(CommentingDisabledActionFilter));

            ControllerActionFilterCriteria tagCloudActionCriteria = new ControllerActionFilterCriteria();

            tagCloudActionCriteria.AddMethod <TagController>(t => t.Cloud());
            tagCloudActionCriteria.AddMethod <TagController>(t => t.CloudForArea(null));
            filterRegistry.Add(new[] { tagCloudActionCriteria }, typeof(ArchiveListActionFilter));

            ControllerActionFilterCriteria areaListActionCriteria = new ControllerActionFilterCriteria();

            areaListActionCriteria.AddMethod <PostController>(p => p.Add(null, null));
            areaListActionCriteria.AddMethod <PostController>(p => p.SaveAdd(null, null, null));
            areaListActionCriteria.AddMethod <PostController>(p => p.Edit(null));
            areaListActionCriteria.AddMethod <PostController>(p => p.SaveEdit(null, null));
            filterRegistry.Add(new[] { areaListActionCriteria }, typeof(AreaListActionFilter));

            ControllerActionFilterCriteria pageListActionCriteria = new ControllerActionFilterCriteria();

            pageListActionCriteria.AddMethod <PageController>(p => p.Add(null));
            pageListActionCriteria.AddMethod <PageController>(p => p.SaveAdd(null, null, null));
            pageListActionCriteria.AddMethod <PageController>(p => p.Edit(null));
            pageListActionCriteria.AddMethod <PageController>(p => p.SaveEdit(null, null, null));
            filterRegistry.Add(new[] { pageListActionCriteria }, typeof(PageListActionFilter));

            ControllerActionFilterCriteria adminActionsCriteria = new ControllerActionFilterCriteria();

            adminActionsCriteria.AddMethod <AreaController>(a => a.Find());
            adminActionsCriteria.AddMethod <AreaController>(a => a.FindQuery(null));
            adminActionsCriteria.AddMethod <AreaController>(a => a.ItemEdit(null));
            adminActionsCriteria.AddMethod <AreaController>(a => a.ItemSave(null));
            adminActionsCriteria.AddMethod <AreaController>(a => a.BlogML(null));
            adminActionsCriteria.AddMethod <AreaController>(a => a.BlogMLSave(null, null, null));
            adminActionsCriteria.AddMethod <CommentController>(c => c.List(0, 0));
            adminActionsCriteria.AddMethod <CommentController>(c => c.Remove(null, null, null));
            adminActionsCriteria.AddMethod <CommentController>(c => c.Approve(null, null, null));
            adminActionsCriteria.AddMethod <FileController>(f => f.ListByPost(null));
            adminActionsCriteria.AddMethod <FileController>(f => f.AddFileContentToPost(null, null, null));
            adminActionsCriteria.AddMethod <FileController>(f => f.AddFileToPost(null, null, null));
            adminActionsCriteria.AddMethod <FileController>(f => f.EditFileOnPost(null, null, null, null));
            adminActionsCriteria.AddMethod <FileController>(f => f.RemoveFileFromPost(null, null, null));
            adminActionsCriteria.AddMethod <PageController>(p => p.Add(null));
            adminActionsCriteria.AddMethod <PageController>(p => p.SaveAdd(null, null, null));
            adminActionsCriteria.AddMethod <PageController>(p => p.Edit(null));
            adminActionsCriteria.AddMethod <PageController>(p => p.SaveEdit(null, null, null));
            adminActionsCriteria.AddMethod <PageController>(p => p.Remove(null, null));
            adminActionsCriteria.AddMethod <PluginController>(p => p.List());
            //adminActionsCriteria.AddMethod<PluginController>(p => p.Item(Guid.Empty));
            adminActionsCriteria.AddMethod <PostController>(p => p.Add(null, null));
            adminActionsCriteria.AddMethod <PostController>(p => p.SaveAdd(null, null, null));
            adminActionsCriteria.AddMethod <PostController>(p => p.Edit(null));
            adminActionsCriteria.AddMethod <PostController>(p => p.SaveEdit(null, null));
            adminActionsCriteria.AddMethod <PostController>(p => p.Remove(null, null));
            adminActionsCriteria.AddMethod <PostController>(p => p.ListWithDrafts(null, 0));
            adminActionsCriteria.AddMethod <SiteController>(s => s.Dashboard());
            adminActionsCriteria.AddMethod <SiteController>(s => s.Item());

            //TODO: (erikpo) Once we have roles other than "authenticated" this should move to not be part of the admin, but just part of authed users
            adminActionsCriteria.AddMethod <UserController>(u => u.ChangePassword(null));
            filterRegistry.Add(new[] { adminActionsCriteria }, typeof(AuthorizationFilter));

            ControllerActionFilterCriteria dashboardDataActionCriteria = new ControllerActionFilterCriteria();

            dashboardDataActionCriteria.AddMethod <SiteController>(s => s.Dashboard());
            filterRegistry.Add(new[] { dashboardDataActionCriteria }, typeof(DashboardDataActionFilter));

            ControllerActionFilterCriteria spamFilterCriteria = new ControllerActionFilterCriteria();

            spamFilterCriteria.AddMethod <PostController>(p => p.AddComment(null, null, null, null, null, null));
            filterRegistry.Add(new[] { spamFilterCriteria }, typeof(SpamFilterActionFilter));
        }