У меня есть робот, который публикует сообщения в темы. Иногда ему нужно сначала загрузить изображение, а затем включить его в пост.
Насколько я вижу, нет области API, предоставляющей доступ к /uploads, поэтому мне приходится давать ему доступ ко всему.
Было бы разумно: (а) определить стандартную область для этого или (б) разрешить пользовательскую область с доступом к конечным точкам, определяемым администратором?
Загрузка файлов работает (через эндпоинт /uploads). Однако единственный способ предоставить необходимые разрешения API-ключом — выдать все права, что представляет собой очевидный риск для безопасности.
Я прошу добавить отдельную область доступа (scope) для API, включающую /uploads. Если бы она входила в состав «запись постов», меня бы это устроило, но могут быть причины выделить это в отдельную область. Если это невозможно (хотя в целом это хорошая идея), я хотел бы иметь возможность определять пользовательскую область доступа, включающую только те права, которые я хочу разрешить.
Идея предоставить область видимости для создания загрузок кажется мне хорошей, безусловно pr-welcome. Соответствующее изменение будет находиться примерно здесь:
Что ж, не все делают такие очевидные вещи перед публикацией. Извините за это! Похоже, что как минимум один другой человек (который, как я полагаю, знает об этом конкретном вопросе больше меня) ожидал, что область видимости, позволяющая создавать посты, также сможет создавать и соответствующие загрузки.
Разве не логично, что если API-ключ может создавать пост, то он должен также иметь возможность создавать и загрузку, точно так же, как пользователь, который может создать пост, может также создать и загрузку?
Существуют ли ситуации, когда загрузки полезны вне контекста поста? Насколько я понимаю, загрузки автоматически удаляются периодически, если они не связаны с постами, поэтому предоставление возможности ограничить область действия API-ключа только загрузками без создания или редактирования постов явно не кажется полезным.
Как отметил @pfaffman, было бы логичнее, если бы области действия topics:write и posts:edit предоставляли доступ к загрузкам, если у связанного пользователя есть разрешение на загрузку.
Вероятно, загрузка нового аватара — это функция, которую можно использовать с областью доступа users:update. (Что в настоящее время невозможно?)
Учитывая более разнообразные и потенциальные будущие возможности использования загрузки, вероятно, имеет смысл создать отдельную область доступа и возложить на пользователя ответственность за выбор соответствующей области. Это четко определяет для пользователей, когда API-ключ сможет или не сможет выполнять загрузку, и предотвращает потенциальные упущения ситуаций, когда загрузка может быть использована при расширении API.
Готово. Потребуется тестирование и прочее, но вот как минимум базовая версия.
Я использовал отдельную область видимости по причинам, описанным выше — я вполне понимаю, что могу захотеть разрешить публикации, но не загрузки файлов.