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); }
/// <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); }
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); }
/// <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); } } }
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); } } } } } }