Переопределение функции аутентификации CKAN resource_show, но не удается добавить 'auth_allow_anonymous_access' - PullRequest
0 голосов
/ 27 февраля 2020

Я реализовал расширение, которое скрывает некоторые ресурсы набора данных и реализует пользовательскую функцию аутентификации для переопределения стандартной аутентификации для resource_show. Все отлично работает для вошедшего в систему пользователя, но без входа в систему ресурсы неправильно заблокированы. В моей функции after_show, которая скрывает ресурсы, которые пользователь не имеет права видеть (см. Ниже), есть вызов authz.is_authorized, который возвращает false с сообщением «Действие resource_show требует аутентифицированного пользователя». Я знаю, что декоратор @toolkit.auth_allow_anonymous_access призван помочь в этой ситуации, но добавление его не решило мою проблему. Я также использую функции аутентификации в цепочке, может ли это быть частью проблемы?

после шоу из моего plugin.py

def after_show(self, context, data_dict):
    resources = []
    for resource_dict in data_dict['resources']:
        auth = authz.is_authorized('resource_show', context, resource_dict)
        if auth['success']:
            resources.append(resource_dict)
    data_dict['resources'] = resources
    return data_dict

моей пользовательской функции аутентификации resource_show

@toolkit.chained_auth_function
@toolkit.auth_allow_anonymous_access
def resource_show(next_auth, context, data_dict):
    base_auth = next_auth(context, data_dict)
    if not base_auth['success']:
        return base_auth

    --- my code that never gets run ---
...