Рейтинг:0

Как программно предоставить доступ к закрытым файлам?

флаг us

Я работал над идеей, что я могу использовать hook_file_download для предоставления доступа к личным файлам; но похоже, что этот хук можно использовать только для ограничения доступа к файлам, а не для предоставления доступа.

Я видел предложения других хуков, таких как file_access и file_access_alter; но ничего из этого больше не существует.

Kevin avatar
флаг in
Если вы не возвращаете -1 для разных «проверок» в hook_file_download, разве это не дает доступ? `Если у пользователя нет разрешения на доступ к файлу, вернуть -1. Если у пользователя есть разрешение, верните массив с соответствующими заголовками. `
liquidcms avatar
флаг us
На ваш первый вопрос нет, не как это работает. Все модули возвращают результаты для создания массива, который проверяется функцией загрузки в ядре. Если какой-либо модуль (например, модуль основного файла) возвращает -1; тогда не имеет значения, что возвращает мой пользовательский модуль, поскольку в массиве уже есть -1, что приводит к отказу в доступе. Итак, как я уже сказал выше, я могу ограничить доступ в своем коде; но я не могу предоставить это.
флаг cn
Да, вы можете использовать его для предоставления доступа (по заголовкам, как упоминал Кевин), но вы не можете использовать его для игнорирования/отмены явного решения другого модуля об отказе в доступе. Помните, что модули могут возвращать `NULL`, если они не заинтересованы в файле, поэтому любое явное решение об отказе должно соблюдаться по умолчанию. Если вы не доверяете или не можете полагаться на принятие решений этим другим модулем, вы можете сократить его, внедрив hook_module_implements_alter, чтобы полностью удалить реализацию модуля hook_file_download.
liquidcms avatar
флаг us
Вы не можете явно использовать этот хук для предоставления доступа (как я уже сказал). Запретить имеет приоритет. При этом, я думаю, что я иду на это неправильно. Доступ к частному файлу определяется доступом объекта, к которому он прикреплен, и в этом проблема. Почему мой клиент хочет разрешить доступ к файлу, а не к объекту, к которому он прикреплен? Мы разберемся с этим требованием. Но, если это действительно так, то есть модуль, разрешающий доступ по ролям к приватным файлам (но по причинам, изложенным выше, он, скорее всего, не работает). Это открыло бы больше людей, чем хотелось бы; но тогда крючок можно использовать для ограничения.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.