public virtual ActionResult ApplyWidgetPermissions(PermissionsModel model)
        {
            var        widgetService = ServiceLocator.Current.GetInstance <IPageWidgetService>();
            PageWidget pageWidget    = widgetService.Find(model.EntityId);

            if (pageWidget != null && pageWidget.Widget != null)
            {
                ICoreWidget coreWidget =
                    MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == pageWidget.Widget.Identifier);
                ICorePrincipal currentPrincipal = this.CorePrincipal();
                bool           isOwner          = currentPrincipal != null && pageWidget.User != null &&
                                                  currentPrincipal.PrincipalId == pageWidget.User.PrincipalId;

                if (coreWidget != null && coreWidget is BaseWidget && permissionService.IsAllowed(((BaseWidget)coreWidget).PermissionOperationCode, currentPrincipal, coreWidget.GetType(), pageWidget.Id, isOwner, PermissionOperationLevel.Object))
                {
                    permissionHelper.ApplyPermissions(model, coreWidget.GetType());

                    if (permissionService.IsAllowed(((BaseWidget)coreWidget).PermissionOperationCode, currentPrincipal, coreWidget.GetType(), pageWidget.Id, isOwner, PermissionOperationLevel.Object))
                    {
                        return(Content(Url.Action(MVC.Pages.Show(pageWidget.Page.Url))));
                    }
                }
            }

            return(Content(Url.Action(MVC.Home.Index())));
        }
        public virtual ActionResult AddWidget(long pageId, long widgetId)
        {
            var  widgetService = ServiceLocator.Current.GetInstance <IWidgetService>();
            Page currentPage   = pageService.Find(pageId);

            if (currentPage != null)
            {
                var curWidget = widgetService.Find(widgetId);

                if (curWidget != null && widgetService.IsWidgetEnable(curWidget) && permissionService.IsAllowed((Int32)PageOperations.Update, this.CorePrincipal(), typeof(Page),
                                                                                                                pageId, IsPageOwner(currentPage), PermissionOperationLevel.Object))
                {
                    ICoreWidget coreWidget =
                        MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == curWidget.Identifier);

                    if (coreWidget != null && coreWidget is BaseWidget && permissionService.IsAllowed(((BaseWidget)coreWidget).AddToPageOperationCode,
                                                                                                      this.CorePrincipal(), coreWidget.GetType(), null))
                    {
                        var widget = PageHelper.AddWidgetToPage(pageId, widgetId, this.CorePrincipal(), null);
                        if (widget != null)
                        {
                            permissionService.SetupDefaultRolePermissions(
                                ResourcePermissionsHelper.GetResourceOperations(coreWidget.GetType()),
                                coreWidget.GetType(), widget.Id);
                            if (currentPage.IsTemplate && widget.Widget.IsPlaceHolder)
                            {
                                IEnumerable <Page> pagesFromTemplate = pageService.GetPagesFromTemplate(currentPage);
                                foreach (var pageFromTemplate in pagesFromTemplate)
                                {
                                    var widgetFromTemplate = PageHelper.AddWidgetToPage(pageFromTemplate.Id, widgetId, this.CorePrincipal(), widget.Id);
                                    if (widgetFromTemplate != null)
                                    {
                                        permissionService.SetupDefaultRolePermissions(
                                            ResourcePermissionsHelper.GetResourceOperations(coreWidget.GetType()),
                                            coreWidget.GetType(), widgetFromTemplate.Id);
                                    }
                                }
                            }

                            return(PartialView(MVC.Shared.Views.Widgets.WidgetContentHolder,
                                               WidgetHelper.GetWidgetViewModel(widget)));
                        }
                    }
                    return(null);
                }
            }

            return(null);
        }
Example #3
0
        /// <summary>
        /// Gets the widget view model.
        /// </summary>
        /// <param name="pageWidget">The page widget.</param>
        /// <returns></returns>
        public static WidgetHolderViewModel GetWidgetViewModel(PageWidget pageWidget)
        {
            if (pageWidget == null || pageWidget.Widget == null)
            {
                return(null);
            }

            ICoreWidget coreWidget =
                MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == pageWidget.Widget.Identifier);

            var            permissionService = ServiceLocator.Current.GetInstance <IPermissionCommonService>();
            ICorePrincipal currentPrincipal  = HttpContext.Current.CorePrincipal();

            var widgetModel = new WidgetHolderViewModel
            {
                Widget         = pageWidget,
                WidgetInstance = new CoreWidgetInstance
                {
                    InstanceId       = pageWidget.InstanceId,
                    WidgetIdentifier = pageWidget.Widget.Identifier,
                    PageSettings     = new CorePageSettings {
                        PageId = pageWidget.Page.Id
                    },
                    PageWidgetId = pageWidget.Id
                },

                SystemWidget = coreWidget,

                Access = coreWidget is BaseWidget?
                         permissionService.GetAccess(((BaseWidget)coreWidget).Operations,
                                                     HttpContext.Current.CorePrincipal(), coreWidget.GetType(), pageWidget.EntityId,
                                                     currentPrincipal != null && pageWidget.User != null && pageWidget.User.PrincipalId == currentPrincipal.PrincipalId) : null,
                             PageAccess = permissionService.GetAccess(pageWidget.Page.Operations, currentPrincipal, typeof(Page),
                                                                      pageWidget.Page.Id, currentPrincipal != null && pageWidget.Page.User != null &&
                                                                      pageWidget.Page.User.PrincipalId == currentPrincipal.PrincipalId),
            };

            if (pageWidget.Page.IsTemplate && pageWidget.Widget.IsPlaceHolder)
            {
                widgetModel.Access[((BaseWidget)widgetModel.SystemWidget).PermissionOperationCode] = false;
            }

            return(widgetModel);
        }
Example #4
0
        public static IList <Widget> GetAvailableWidgets(bool isTemplate)
        {
            ICorePrincipal       user              = HttpContext.Current.CorePrincipal();
            var                  service           = ServiceLocator.Current.GetInstance <IWidgetService>();
            var                  permissionService = ServiceLocator.Current.GetInstance <IPermissionCommonService>();
            IEnumerable <Widget> availableWidgets  = service.GetAvailableWidgets(user, isTemplate);
            IList <Widget>       allowedWidgets    = new List <Widget>();

            foreach (var widget in availableWidgets)
            {
                Widget      widget1    = widget;
                ICoreWidget coreWidget =
                    MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == widget1.Identifier);
                if (coreWidget is BaseWidget && permissionService.IsAllowed(((BaseWidget)coreWidget).AddToPageOperationCode, user, coreWidget.GetType(), null))
                {
                    allowedWidgets.Add(widget);
                }
            }

            return(allowedWidgets);
        }
Example #5
0
        /// <summary>
        /// Determines whether [is manage widget allowed] [the specified widget identifier].
        /// </summary>
        /// <param name="pageWidget">The page widget.</param>
        /// <param name="user">The user.</param>
        /// <param name="entityId">The entity id.</param>
        /// <returns>
        ///     <c>true</c> if [is manage widget allowed] [the specified widget identifier]; otherwise, <c>false</c>.
        /// </returns>
        public static bool IsManageWidgetAllowed(PageWidget pageWidget, ICorePrincipal user, long entityId)
        {
            bool isAllowed = true;

            if (pageWidget.Widget != null)
            {
                ICoreWidget widget =
                    MvcApplication.Widgets.FirstOrDefault(item => item.Identifier == pageWidget.Widget.Identifier);
                if (widget != null && widget is BaseWidget)
                {
                    bool isOwner = pageWidget.User != null && user != null &&
                                   pageWidget.User.PrincipalId == user.PrincipalId;
                    var permissionService = ServiceLocator.Current.GetInstance <IPermissionCommonService>();
                    isAllowed = permissionService.IsAllowed((widget as BaseWidget).ManageOperationCode, user,
                                                            widget.GetType(), entityId, isOwner,
                                                            PermissionOperationLevel.Object);
                }
            }

            return(isAllowed);
        }
        /// <summary>
        /// Shows the widget permissions.
        /// </summary>
        /// <param name="pageWidgetId">The page widget id.</param>
        /// <returns></returns>
        public virtual ActionResult ShowWidgetPermissions(long pageWidgetId)
        {
            var        widgetService = ServiceLocator.Current.GetInstance <IPageWidgetService>();
            PageWidget pageWidget    = widgetService.Find(pageWidgetId);

            if (pageWidget == null || pageWidget.Widget == null)
            {
                throw new HttpException((int)HttpStatusCode.NotFound, Translate("Messages.NotFound"));
            }
            ICoreWidget coreWidget =
                MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == pageWidget.Widget.Identifier);
            ICorePrincipal currentPrincipal = this.CorePrincipal();
            bool           isOwner          = currentPrincipal != null && pageWidget.User != null &&
                                              currentPrincipal.PrincipalId == pageWidget.User.PrincipalId;

            if (coreWidget == null || !(coreWidget is BaseWidget) || !permissionService.IsAllowed(((BaseWidget)coreWidget).PermissionOperationCode, currentPrincipal, coreWidget.GetType(), pageWidgetId, isOwner, PermissionOperationLevel.Object))
            {
                throw new HttpException((int)HttpStatusCode.NotFound, Translate("Messages.NotFound"));
            }
            return(PartialView(MVC.Shared.Views.Widgets.WidgetPermissions, permissionHelper.BindPermissionsModel(pageWidgetId, coreWidget.GetType(), true)));
        }
        /// <summary>
        /// Setups the plugins.
        /// </summary>
        /// <param name="plugins">The plugins.</param>
        protected static void SetupPlugins(IEnumerable <Plugin> plugins)
        {
            var widgetService = ServiceLocator.Current.GetInstance <IWidgetService>();

            var existingWidgets = widgetService.GetAll();

            var registeredWidgets = MvcApplication.Widgets;

            foreach (ICoreWidget widget in registeredWidgets)
            {
                ICoreWidget widget1 = widget;

                if (!existingWidgets.Any(
                        wd => wd.Identifier == widget1.Identifier && ((wd.Plugin == null && widget1.Plugin == null) || (wd.Plugin != null && widget1.Plugin != null && wd.Plugin.Identifier == widget1.Plugin.Identifier))))
                {
                    Plugin plugin = null;
                    if (widget1.Plugin != null)
                    {
                        plugin = plugins.FirstOrDefault(pl => pl.Identifier == widget1.Plugin.Identifier);
                    }
                    var newWidget = new Widget
                    {
                        Identifier      = widget1.Identifier,
                        Title           = widget1.Title,
                        IsDetailsWidget = widget1.IsDetailsWidget,
                        IsPlaceHolder   = widget1.IsPlaceHolder,
                        Plugin          = plugin,
                    };
                    if (plugin == null)
                    {
                        newWidget.Status = WidgetStatus.Enabled;
                    }
                    widgetService.Save(newWidget);
                }
            }
        }
Example #8
0
        private void MapFromTemplate(Page page)
        {
            HasTemplate = true;
            Layout      = page.Template.PageLayout;
            Settings    = page.Template.Settings;
            Access[PageTemplate.UnlinkOperationCode] = Access[(int)PageOperations.Update];
            Access[(int)PageOperations.Update]       = false;
            ICorePrincipal currentPrincipal = HttpContext.Current.CorePrincipal();
            var            widgetService    = ServiceLocator.Current.GetInstance <IWidgetService>();

            foreach (var widget in page.Template.Widgets.OrderBy(wd => wd.OrderNumber))
            {
                var widgetToShow = !widget.Widget.IsPlaceHolder
                                       ? widget
                                       : page.Widgets.Where(pageWidget => pageWidget.TemplateWidgetId == widget.Id).
                                   FirstOrDefault();
                if (widget.Widget.IsPlaceHolder)
                {
                    widgetToShow.PageSection  = widget.PageSection;
                    widgetToShow.ColumnNumber = widget.ColumnNumber;
                }
                PageWidget  widget1    = widgetToShow;
                ICoreWidget coreWidget =
                    widgetToShow.Widget != null?MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == widget1.Widget.Identifier) : null;

                bool isWidetEnabled = widgetService.IsWidgetEnable(widget1.Widget);
                var  widgetModel    = new WidgetHolderViewModel
                {
                    WidgetInstance = new CoreWidgetInstance
                    {
                        InstanceId       = widgetToShow.InstanceId,
                        WidgetIdentifier =
                            coreWidget != null ? coreWidget.Identifier : null,
                        PageSettings =
                            new CorePageSettings {
                            PageId = page.Template.Id
                        },
                        PageWidgetId = widgetToShow.Id
                    },
                    Widget = widget1,
                    Access = coreWidget is BaseWidget
                                                       ? permissionService.GetAccess(
                        ((BaseWidget)coreWidget).Operations,
                        HttpContext.Current.CorePrincipal(), coreWidget.GetType(),
                        widget1.EntityId,
                        currentPrincipal != null && widget1.User != null &&
                        widget1.User.PrincipalId == currentPrincipal.PrincipalId)
                                                       : null,
                    PageAccess   = Access,
                    SystemWidget = (isWidetEnabled && coreWidget != null) ? coreWidget : null
                };
                if (!widget.Widget.IsPlaceHolder)
                {
                    widgetModel.Access[((BaseWidget)widgetModel.SystemWidget).ManageOperationCode]     = false;
                    widgetModel.Access[((BaseWidget)widgetModel.SystemWidget).PermissionOperationCode] = false;
                }
                Widgets.Add(widgetModel);

                if (coreWidget != null && coreWidget.Plugin != null)
                {
                    if (!PagePlugins.Any(t => t.PluginLocation == coreWidget.Plugin.PluginLocation))
                    {
                        PagePlugins.Add(coreWidget.Plugin);
                    }
                    if (coreWidget is BaseWorkflowWidget)
                    {
                        var workflowWidget = (BaseWorkflowWidget)coreWidget;
                        foreach (var innerPlugin in workflowWidget.InnerPlugins)
                        {
                            ICorePlugin plugin = innerPlugin;
                            if (!PagePlugins.Any(t => t.Identifier == plugin.Identifier))
                            {
                                PagePlugins.Add(plugin);
                            }
                        }
                    }
                }
            }
        }