gpt4 book ai didi

python - 如何在 CKAN 扩展中自定义 authz.py 文件?

转载 作者:行者123 更新时间:2023-11-28 19:01:18 24 4
gpt4 key购买 nike

我想在 CKAN 中添加新角色。我可以在 authz.py 文件中执行此操作。我定义了一个新角色并对该角色进行了一些操作并且它起作用了。但我在基线时这样做了。我想在扩展中这样做。所以我创建了名为“customroles”的新扩展。我将 authz.py 从“/usr/lib/ckan/default/src/ckan/ckan”复制到自定义文件夹“/usr/lib/ckan/default/src/ckanext-customroles/ckanext/customroles”。然后我添加了新角色( super ),您可以在下面的代码中看到。

ROLE_PERMISSIONS = OrderedDict([
('admin', ['admin']),
('editor', ['read', 'delete_dataset', 'create_dataset', 'update_dataset', 'manage_group']),
('member', ['read', 'manage_group']),
**('super', ['read', 'delete_dataset', 'create_dataset', 'manage_group']),**
])


def _trans_role_admin():
return _('Admin')


def _trans_role_editor():
return _('Editor')


def _trans_role_member():
return _('Member')

def _trans_role_super():
return _('Super')

但是我在组织页面中添加新成员时看不到新角色。当我修改基本代码时,我看到了新角色。但在扩展中它不起作用。

我是否需要做任何其他事情来修改扩展名中的 authz.py 文件?你知道我该如何解决这个问题吗?

谢谢,

最佳答案

据我所知,目前这在扩展程序中是不可能的。

CKAN 授权架构的某些部分可以通过插件进行修改和扩展,例如通过 IAuthFunctions , IAuthenticator , 和 IPermissionLabels接口(interface)。但是,ckan.authz 中的角色是硬编码的。

您可以尝试使用 IAuthFunctions 来覆盖 CKAN 的内置 auth 函数来创建类似的效果。特别是,您可以使用该方法从某些 editor 成员中删除一些特权,使他们成为您试图实现的“ super ”用户。 (请注意,member 用户添加权限可能不会起作用,因为即使您修改了身份验证,这些用户也将无法通过基于其角色的检查功能将授予他们访问权限)

它不会解决您眼前的问题,但我确实认为 CKAN 支持您正在尝试做的事情会很好。因此我创建了 a ticket在 CKAN 的功能讨论跟踪器中。请随时向其中添加有关您的用例的更多信息。

关于python - 如何在 CKAN 扩展中自定义 authz.py 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52382306/

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