Java 在XWiki中设置文档的用户和组权限
我正在编写一个java组件,用于构建wiki中的所有页面。分配可能从java服务组件中查看页面或空间的用户权限或组的最佳方式是什么?Java 在XWiki中设置文档的用户和组权限,java,rights,xwiki,Java,Rights,Xwiki,我正在编写一个java组件,用于构建wiki中的所有页面。分配可能从java服务组件中查看页面或空间的用户权限或组的最佳方式是什么? 在API中很难找到这方面的详细信息。您在API中找不到任何详细信息,因为权限API只是关于读取权限信息,而不是设置权限 如果您希望以编程方式设置页面的权限,并且可以假设默认权限处理程序已经就绪(在XWiki中创建新用户的UI和代码都会这样做,因此看起来不太合理),那么您可以在页面中将它们创建为对象 权限是通过将类型为“XWiki.XWikiRights”的对象添加
在API中很难找到这方面的详细信息。您在API中找不到任何详细信息,因为权限API只是关于读取权限信息,而不是设置权限 如果您希望以编程方式设置页面的权限,并且可以假设默认权限处理程序已经就绪(在XWiki中创建新用户的UI和代码都会这样做,因此看起来不太合理),那么您可以在页面中将它们创建为对象
:包含以逗号分隔的组引用列表的字符串(例如默认管理员和“所有成员”组的groups
)XWiki.XWikiAdminGroup、XWiki.XWikiAllGroup
:包含逗号分隔的用户引用列表的字符串(例如users
将描述本地wiki中的主wiki管理员和“Admin”帐户xwiki:xwiki.Admin,xwiki.Admin
:一个字符串,包含受此条目影响的权限列表,以逗号分隔,例如查看、评论、编辑级别
:一个应该有两个值的整数:allow
表示条目是“允许此权限”,1
表示它是“拒绝这些权限”0
组
和用户
字段可以为空,但通常其中一个字段会填充数据。必须使用一些值设置级别
和允许
如何在页面上设置权限的一个示例是(内部)方法XWiki.protectUserPage
,该方法在新创建的用户上设置权限,该用户可以在一个配置文件页面上编辑权限:
public void protectUserPage(String userName, String userRights, XWikiDocument doc, XWikiContext context)
throws XWikiException
{
DocumentReference rightClassReference = getRightsClass(context).getDocumentReference();
EntityReference relativeRightClassReference =
rightClassReference.removeParent(rightClassReference.getWikiReference());
// Allow users to edit their own profiles
BaseObject newuserrightsobject = doc.newXObject(relativeRightClassReference, context);
newuserrightsobject.setLargeStringValue("users", userName);
newuserrightsobject.setStringValue("levels", userRights);
newuserrightsobject.setIntValue("allow", 1);
}
这里的前几行稍微复杂一些,以确保XWiki.XWikiRights
类页面存在并正确初始化;您应该能够做一些简单的事情,例如:
BaseObject newrightsobject = doc.newObject("XWiki.XWikiRights", context);
userRights
通常在此处edit
(只是在查找代码时,我发现这实际上是可配置的…;userName
是此处用户配置文件页面的全名(例如XWiki.NewUser
)
实际的完整代码可以在github上查看,例如7.2版本:
最后,要区分仅授予特定页面的权限和授予页面及其所有子页面的权限:如果您希望权限对象也对子页面有效,请不要将其添加到页面本身,而是创建一个名为WebPreferences
的特殊子页面,并添加类型为XWiki.XWikiGlobalRights
(具有相同字段)添加到该页
还有一些建议:
有关访问权限如何工作的更多详细信息,请参阅参考部分:“权限概述”
如果已安装“管理工具”扩展,则可以查看“ShowRights”页面以查看wiki中所有正确的对象。谢谢您的回答!如何创建一个新组,如
MyCompany.HRGroup
,MyCompany.AdminGroup
,MCompany.EngineersGroup
,具有不同权限,然后根据用户的角色向其添加用户?@Nawaz如果您不想在XW中添加这些组iki
space,您可以为它们中的每一个创建一个空页面,然后在对象编辑器中向其中添加XWiki.XWikiGroups
类型的对象。不要忘记设置“终端页面”复选框创建它时。如果你想通过编程而不是通过用户界面来完成此操作,答案是渴望得到评论;请问一个新问题。@ClemensKlein Robbenhaar:啊,我明白了。我不知道XWiki
是一个空间。我想我可以使用它。我对XWiki.HRGroup
也很满意。是的,我想通过编程来完成。我会的问一个新问题。好了: