Как настроить файл authz.py в расширении CKAN? - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу добавить новую роль в CKAN.И я могу сделать это в файле authz.py.Я определил новую роль и дал некоторое действие этой роли, и это сработало.Но я сделал это в базовой линии.Я хочу сделать это в расширении.Поэтому я создал новое расширение с именем «customroles».И я скопировал authz.py из "/ usr / lib / ckan / default / src / ckan / ckan" в пользовательскую папку "/ usr / lib / ckan / default / src / ckanext-customroles / ckanext / customroles".Затем я добавил новую роль (Super), как вы можете видеть ниже код.

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 в расширении?Вы знаете, как я могу решить эту проблему?

Спасибо,

1 Ответ

0 голосов
/ 19 сентября 2018

Насколько я знаю, в настоящее время это невозможно в расширении.

Существуют некоторые части архитектуры авторизации CKAN, которые можно изменять и расширять с помощью плагинов, например, через * 1004.*, IAuthenticator и IPermissionLabels интерфейсы.Роли в ckan.authz, однако, жестко запрограммированы.

Вы можете попробовать использовать IAuthFunctions, чтобы переопределить встроенные функции аутентификации CKAN для создания аналогичного эффекта.В частности, вы можете использовать этот подход для удаления некоторых привилегий у определенных editor участников, превращая их в «супер» пользователей, которых вы пытаетесь реализовать.(Обратите внимание, что добавление привилегий к member пользователям, вероятно, не будет работать, так как эти пользователи не пройдут проверки, основанные на их роли, даже если ваши измененные функции авторизации предоставят им доступ)

Это не решит вашу непосредственную проблему, но я думаю, что было бы неплохо, чтобы CKAN поддержал то, что вы пытаетесь сделать.Поэтому я создал тикет в трекере обсуждений функций CKAN.Не стесняйтесь добавлять к нему дополнительную информацию о вашем сценарии использования.

...