[英]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
和IPermissionLabels
接口。 但是, ckan.authz
的角色是硬编码的。
您可以尝试使用IAuthFunctions
来覆盖CKAN的内置auth函数以创建类似的效果。 特别是,您可以使用该方法从某些editor
成员中删除某些特权,使其成为您尝试实现的“超级”用户。 (请注意, 添加权限的member
用户可能无法正常工作,因为这些用户将根据自己的角色失败检查,即使你修改的身份验证功能将授予他们访问)
它不会解决您当前的问题,但我认为CKAN支持您正在尝试做的事情会很好。 因此,我在CKAN的功能讨论跟踪器中创建了一张票 。 您可以随意添加有关您的用例的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.