我们有多个站点,多语言解决方案。我们有一个特定的网站(网站A),我们希望将英语作为“主”语言,然后翻译并以各种其他语言发布。我们希望阻止,例如法语编辑能够使用除法语之外的任何其他语言进行编辑和发布。
但是,法语编辑器将具有英语和法语语言读/写权限,因为他们在解决方案的另一部分(站点B)上工作,因此我们无法使用这些权限直接指定他们在站点上具有哪些权限答:我们还仅使用删除继承来限制角色权限,并且从不显式拒绝,因此权限是累积的。
是否可以创建特定于语言的工作流,并为其分配关联角色,以防止此编辑器编辑或发布其他语言的项目?
注意:如果此编辑器可以使用所有语言发布,但只有已经移动到“可发布”状态的语言版本,并且无法自己发布外语版本(如果他是确实发布了例如德语版本,它只是一个完整的,可发布的版本,而不是正在进行的工作。)
编辑:为了澄清,我不介意我的编辑能够发布项目的所有可发布版本,只要他只能使用他拥有该网站所有权的一种语言进行编辑,并且不能使其他版本可以发布如果没有,是否有解决此问题的标准/最佳实践解决方案?
答案 0 :(得分:4)
您可以通过更改web.config中的以下设置,强制Sitecore仅发布用户具有读/写访问权限的项目:
Publishing.CheckSecurity = true
Publishing.RequireTargetDeleteRightWhenCheckingSecurity = false
Use Default or Custom Access Rights to Control Whether Users Can Publish an Item
这确实意味着您需要将您的角色和权限分开,因为您需要为站点1英语编辑器,站点1法语编辑器,站点2英语编辑器等单独的角色。
编辑:感谢上面的澄清,我可以看到你的问题所在。正如我在上面的评论中提到的,也许您可以在“发布”对话框中隐藏/禁用语言选项。刚看了Sitecore.Shell.Applications.Dialogs.Publish.PublishForm
并且正如预期的那样,您需要复制一些私有方法,但是您可以将自己的逻辑添加到BuildLanguages()
以获得所需内容。只需将sitecore\shell\Applications\Dialogs\Publish\Publish.xml
复制到sitecore\shell\Override
,然后将代码更改为指向自定义逻辑。
我讨厌通常向系统模板添加字段,但可能会向/sitecore/templates/System/Language
添加另一个字段以指定哪些角色/用户可以发布该语言。您可以使用Account Selector Field进行此操作。
答案 1 :(得分:0)
您可以设置工作流操作的安全性,从而阻止某些用户执行操作。如果这不能解决问题(因为涉及相同的工作流程),您可以随时恢复自己实施工作流程操作,这很容易。
答案 2 :(得分:0)
我过去通过为用户创建多个帐户来处理此问题。在您的情况下,一个用于英语站点A,一个站点B用英语和法语。它可能不太理想,但我也不认为创建额外的语言。祝你好运!