[英]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.