gpt4 book ai didi

java - 为 XWiki 中的文档设置用户和组权限

转载 作者:行者123 更新时间:2023-11-30 08:06:50 27 4
gpt4 key购买 nike

我正在编写一个 Java 组件,用于构建维基中的所有页面。分配可以从 Java 服务组件中查看页面或空间的用户权限或组的最佳方法是什么?真的很难在 API 中找到这方面的详细信息。

最佳答案

您在API中找不到任何详细信息,因为Rights API只是关于读取权限信息,而不是设置权限

如果你想以编程方式在页面上设置权限,并且你可以假设默认的权限处理程序已经就位(XWiki 中的 UI 和创建新用户的代码都这样做了,所以这似乎不是太不合理),你可以将它们创建为页面中的对象。

  1. 通过向页面添加“XWiki.XWikiRights”类型的对象来设置权限
  2. 这些对象具有以下属性:

    • groups :包含逗号分隔的组引用列表的字符串(例如 XWiki.XWikiAdminGroup,XWiki.XWikiAllGroup 用于默认管理员和“所有成员”组)
    • users : 一个包含逗号分隔的用户引用列表的字符串(例如 xwiki:XWiki.Admin,XWiki.Admin 将描述主 wiki 管理员和“管理员"本地 wiki 中的帐户
    • levels :包含受此条目影响的逗号分隔权限列表的字符串,例如查看、评论、编辑
    • allow :一个应该有两个值的整数:1 表示该条目是“允许此权限”,0 表示它是a“拒绝这些权利”

groupsusers 字段可以为空,但通常其中之一填充有数据。 levelsallow 必须设置一些值。

一个如何在页面上设置权限的示例是(内部)方法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 版本:

https://github.com/xwiki/xwiki-platform/blob/xwiki-platform-7.2/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java#L3366

最后要区分仅授予特定页面的权限与授予页面及其所有子页面的权限:如果您希望权限对象对子页面也有效,请不要将其添加到页面本身,而是创建一个名为 WebPreferences 的特殊子页面,并向该页面添加一个 XWiki.XWikiGlobalRights 类型的对象(具有相同的字段)。

一些进一步的指示:

有关访问权限如何工作的更多详细信息,请参阅 http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Access+Rights特别是引用部分:“权限概述”

如果您安装了“管理工具”扩展,您可以查看“ShowRights”页面以查看您 wiki 中的所有权限对象。

关于java - 为 XWiki 中的文档设置用户和组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34066573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com