如何在 CKAN 扩展中自定义 authz.py 文件?
How to customize authz.py file in CKAN extension?
我想在 CKAN 中添加新角色。我可以在 authz.py 文件中执行此操作。我定义了一个新角色并对该角色进行了一些操作并且它起作用了。但我在基线时这样做了。我想在扩展中这样做。所以我创建了名为 "customroles" 的新扩展。我将 authz.py 从“/usr/lib/ckan/default/src/ckan/ckan”复制到自定义文件夹“/usr/lib/ckan/default/src/ckanext-customroles/ckanext/customroles”。然后我添加了新角色(超级),您可以在下面的代码中看到。
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
, and IPermissionLabels
接口。然而,ckan.authz
中的角色是硬编码的。
您可以尝试使用 IAuthFunctions
覆盖 CKAN 的内置身份验证功能来创建类似的效果。特别是,您可以使用该方法从某些 editor
成员中删除某些特权,使他们成为您尝试实现的 "super" 用户。 (请注意,向 member
用户添加 权限可能 不会 起作用,因为这些用户将无法通过基于其角色的检查,即使您修改后的授权功能将授予他们访问权限)
它不会解决您眼前的问题,但我确实认为 CKAN 支持您正在尝试做的事情会很好。因此,我在 CKAN 的功能讨论跟踪器中创建了 a ticket。请随时向其中添加有关您的用例的更多信息。
我想在 CKAN 中添加新角色。我可以在 authz.py 文件中执行此操作。我定义了一个新角色并对该角色进行了一些操作并且它起作用了。但我在基线时这样做了。我想在扩展中这样做。所以我创建了名为 "customroles" 的新扩展。我将 authz.py 从“/usr/lib/ckan/default/src/ckan/ckan”复制到自定义文件夹“/usr/lib/ckan/default/src/ckanext-customroles/ckanext/customroles”。然后我添加了新角色(超级),您可以在下面的代码中看到。
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
, and IPermissionLabels
接口。然而,ckan.authz
中的角色是硬编码的。
您可以尝试使用 IAuthFunctions
覆盖 CKAN 的内置身份验证功能来创建类似的效果。特别是,您可以使用该方法从某些 editor
成员中删除某些特权,使他们成为您尝试实现的 "super" 用户。 (请注意,向 member
用户添加 权限可能 不会 起作用,因为这些用户将无法通过基于其角色的检查,即使您修改后的授权功能将授予他们访问权限)
它不会解决您眼前的问题,但我确实认为 CKAN 支持您正在尝试做的事情会很好。因此,我在 CKAN 的功能讨论跟踪器中创建了 a ticket。请随时向其中添加有关您的用例的更多信息。