繁体   English   中英

如何在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的授权体系结构的某些部分可以通过插件进行修改和扩展,例如通过IAuthFunctionsIAuthenticatorIPermissionLabels接口。 但是, ckan.authz的角色是硬编码的。

您可以尝试使用IAuthFunctions来覆盖CKAN的内置auth函数以创建类似的效果。 特别是,您可以使用该方法从某些editor成员中删除某些特权,使其成为您尝试实现的“超级”用户。 (请注意, 添加权限的member用户可能无法正常工作,因为这些用户将根据自己的角色失败检查,即使你修改的身份验证功能将授予他们访问)

它不会解决您当前的问题,但我认为CKAN支持您正在尝试做的事情会很好。 因此,我在CKAN的功能讨论跟踪器中创建了一张票 您可以随意添加有关您的用例的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM