簡體   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