AI OnAI Off
Hi,
Catalog content does not support setting access rights (yet). It has only all-or-nothing setting, a contact might have all the access to the catalog, or nothing at all.
And the problem you saw was because Catalog UI does not handle the exception from server.
Saying, I don't really have a solution for you - not an easy one. Sorry. You might contact our expert services for help.
Regards,
/Q
A little hack can work,
Create a DeleteGroup and assign this group to users those required delete access including admins.
While deleting You can check the logged in user is part of DeleteGroup or not
/K
Thanks for your replies. I think the editors for now just needs to be careful not to delete anything in the catalog
Hi,
we have a requirement to stop editors from deleting catalog entries. I can't see a way of setting the access rights in the catalog.
I've tried cancelling the action in the deleting content event but it throws an exception.
I assume the exception is because its a CMS event. I've looked in the CatalogEventBroadcaster but no luck.
The exception is:
EPiServer.Core.EPiServerCancelException: Game products or variants can't be deletedb__10() >
at EPiServer.Core.DefaultContentEvents.RaiseCancellableDeleteEvent(String key, String defaultReason, DeleteContentEventArgs eventArgs)
at EPiServer.Core.DefaultContentRepository.Delete(ContentReference contentLink, Boolean forceDelete, AccessLevel access)
at EPiServer.Commerce.Shell.Controllers.DeleteController.Delete(IEnumerable`1 contentReferences)
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass13.
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
at System.Web.Mvc.Controller.ExecuteCore()
at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
at EPiServer.Shell.Web.Mvc.ModuleMvcHandler.ProcessController(IController controller)
at EPiServer.Shell.Web.Mvc.ModuleMvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Thanks